Reputation: 399
We have retail industry data . In that ,we need to convert each Unit SKU'S TO CASE SKU'S BY using conversion factor(that is column 4) Input data
We have input data for
Col1 COL2 COL3 COL4 col5
ABHS-SMH-4OZ-01 EA CS 12 1
ABHK-SMH-01 EA CS 24 1
Expected data after transformation :
Col1 COL2 COL3 COL4 col5
ABHS-SMH-4OZ-12 EA CS 12 1
ABHK-SMH-24 EA CS 24 1
We are trying to write the transformation/conditional logic in Java language .
We tried following regex so far:
I want to search for something
e.g. "ABHS-SMH-4OZ-01"
search for "-01"
return "ABHS-SMH-4OZ-24"
Any help would be much appreciated
This is my regex so far
"ABHS-SMH-4OZ-01".matches(".-01."); Thanks In advance.
Upvotes: 1
Views: 103
Reputation: 15000
^(?=(?:(?:(\S+))\s+){4})(\S+-)01(?=\s)
** To see the image better, simply right click the image and select view in new window
This regular expression will do the following:
-01
Live Demo
Sample text
Col1 COL2 COL3 COL4 col5
ABHS-SMH-4OZ-01 EA CS 12 1
ABHK-SMH-01 EA CS 24 1
After Replacement
Col1 COL2 COL3 COL4 col5
ABHS-SMH-4OZ-12 EA CS 12 1
ABHK-SMH-24 EA CS 24 1
NODE EXPLANATION
----------------------------------------------------------------------
^ the beginning of the string
----------------------------------------------------------------------
(?= look ahead to see if there is:
----------------------------------------------------------------------
(?: group, but do not capture (4 times):
----------------------------------------------------------------------
(?: group, but do not capture:
----------------------------------------------------------------------
( group and capture to \1:
----------------------------------------------------------------------
\S+ non-whitespace (all but \n, \r,
\t, \f, and " ") (1 or more times
(matching the most amount
possible))
----------------------------------------------------------------------
) end of \1
----------------------------------------------------------------------
) end of grouping
----------------------------------------------------------------------
\s+ whitespace (\n, \r, \t, \f, and " ")
(1 or more times (matching the most
amount possible))
----------------------------------------------------------------------
){4} end of grouping
----------------------------------------------------------------------
) end of look-ahead
----------------------------------------------------------------------
( group and capture to \2:
----------------------------------------------------------------------
\S+ non-whitespace (all but \n, \r, \t, \f,
and " ") (1 or more times (matching the
most amount possible))
----------------------------------------------------------------------
- '-'
----------------------------------------------------------------------
) end of \2
----------------------------------------------------------------------
01 '01'
----------------------------------------------------------------------
(?= look ahead to see if there is:
----------------------------------------------------------------------
\s whitespace (\n, \r, \t, \f, and " ")
----------------------------------------------------------------------
) end of look-ahead
----------------------------------------------------------------------
Upvotes: 2