Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

regex for preg_split

1 view
Skip to first unread message

Tom

unread,
Jan 24, 2007, 11:19:51 PM1/24/07
to
A puzzle for you regular expression wizards out there.

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

Schluppy

unread,
Jan 25, 2007, 1:28:29 AM1/25/07
to

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

0 new messages