Looking for a regex that will split up a string like the following on
any pipe (|) not inside brackets:
a b | a { b |{c | cd}} d | a b c
Correct result would be:
array ( [0] => 'a b', [1] => 'a { b |{c | cd}} d', [2] => 'a b c')
I've found a couple that get close, but nothing that quite does what
I'd like.
(Or is this better handled without regex?)
Thanks,
Tom
The following appear to work, at least with your example and a couple of
alternatives:
/(?:\s\|\s)(?![\w\s\{]*\})/
Matches a space a pipe and a space NOT followed by zero or more word,
space, or left brace characters and one right brace.
Results in:
Array
(
[0] => a b
[1] => a { b |{c | cd}} d
[2] => a b c
)
YMMV of course. I imagine it's likely to break on more complex strings.
--
Schluppy