I am trying to split a string using regex. For example:
12 13: 14: 15 => One-12, Two-13 , Three-14: 15
i am trying to use the following regex:
^(?P< one>.*)\\s(?P< two>.*):\\s(?P< three>.*)$
So as I see it, "one" should be the value before first "space"(\s) and then until next colon(:) the value should be "two" and everything after that should be "three".
But the output I get is: One-12 13:, Two-14, Three-15
Note: This is Golang type of regex but I guess this is a general Regex problem. Kindly help me out with this one.
The problem could be that it's trying to do the longest match for the leftmost pattern. If that's the case, try changing your original
^(?P< one>.*)\\s(?P< two>.*):\\s(?P< three>.*)$
here......^
to not permit a colon among those characters - [^:]
if like regular sed regexes. For safety's sake, if there may be more than two colons in a line, do that on the second part too.
^(?P<one>[^:]*)\\s(?P<two>[^:]*):\\s(?P<three>.*)$
Edit: That seems to make the difference according to this tester, after changing the \\s
to just \s
and removing the original spaces in the pattern names. Likewise here.