NEO
NEO

Reputation: 399

How do i write Conditional Logic for string Using java

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

Answers (1)

Ro Yo Mi
Ro Yo Mi

Reputation: 15000

Description

^(?=(?:(?:(\S+))\s+){4})(\S+-)01(?=\s)

Regular expression visualization

** To see the image better, simply right click the image and select view in new window

This regular expression will do the following:

  • Look ahead and capture the value in COL4 into capture group 1
  • Match the leading characters in COL1 upto the last -01
  • Replaces the value in COL1 with the leading characters followed by the value from COL4

Example

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

Explanation

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

Related Questions