foo bar 1 2 "hello world" this is a "line of" text
what regex can I use to capture each group of text, but if anything has quotes around it, capture the whole group:
so it would be
foo, bar, 1, 2, hello world, this, is, a, line of, text
CodePudding user response:
You can use:
(?<=\")\w[\w ]*(?=\")|\w
It first tries to match quoted words then on fail, it use \w to match words.
(?<=\"): lookbehind assertion to check it's after the ".
(?=\"): lookafter assertion to check it's before the ".
\w[\w ]*: This first \w should be there not to allow starting with space. otherwise it catches this is a in a single word.
CodePudding user response:
I suppose this got the job done – someone may have a better solution:
/"(?:[^"\\]|\\.)*"|([\w.:] )/g
