Here is the test string:
[x] Package - Front and Rear align, rotate and balance 4 wheels ------------------- $105.00
I want to capture multiple groups as follows:
- Group 1: Open square bracket, 0-3 characters then close bracket
- Group 2: Longest text that excludes --
- Group 3: Longest text that has only -
- Group 4: remainder
Here's my failed attempt
^(\[.{0,3}\])(. (?!.*--.*))(-*)(.*)$
Also I do not have access to lookbehind if that makes a difference.
CodePudding user response:
You can use
^(\[[^][]{0,3}])\s*(.*?)\s*(-- )\s*(.*)
See the regex demo.
Details:
^
- start of string(\[[^][]{0,3}])
- Group 1: a[
char, then zero to three occurrences of any chars other than[
and]
and then a]
char\s*
- zero or more whitespaces(.*?)
- Group 2: any zero or more chars other than line break chars as few as possible\s*
- zero or more whitespaces(-- )
- Group 3: a hyphen and then one or more hyphens\s*
- zero or more whitespaces(.*)
- Group 4: any zero or more chars other than line break chars as many as possible.