good chemistry is complicated,and a little bit messy -LW PerlMonks

### Re: Re: A complex recursive regex,help

by OM_Zen (Scribe)
 on Feb 06, 2003 at 18:53 UTC ( #233227=note: print w/replies, xml ) Need Help??

in reply to Re: A complex recursive regex,help
in thread A complex recursive regex,help

Hi Tachyon ,

```      my \$a = "x|xx|xx|xxxx|xx|xxx|xx|xx|x";
\$a =~ s/(?<=\|)xx(?=(\||\$))/x x/g;

# this is actually doing the regex edge cases too Tachyon

Replies are listed 'Best First'.
Re: Re: Re: A complex recursive regex,help
by tachyon (Chancellor) on Feb 06, 2003 at 23:14 UTC

Well *actually* it does not. Your test string does not *actually* contain the edge cases ( xx at the begining and end of the string):o) If your test string had contained the edge cases you would no doubt have noted the following failure case.....

```my \$a = "xx|xx|xx|xxxx|xx|xxx|xx|xx|xx";
\$a =~ s/(?<=\|)xx(?=(\||\$))/x x/g;
print \$a;
__DATA__
xx|x x|x x|xxxx|x x|xxx|x x|x x|x x

Here is one way to fix your regex:

```\$a =~ s/(?<=\|)|^xx(?=(\||\$))/x x/g;

# and here is a way using the zero width boundary assertion \b
# that will match | ^ or \$ but also matches any non aphlanumeric
# so would potentially fail on '|xx,xx|' type strings
# if they exist in practice as your real data is no doubt
# not really xx.....
\$a =~ s/\bxx\b/x x/g;

cheers

tachyon

s&&rsenoyhcatreve&&&s&n.+t&"\$'\$`\$\"\$\&"&ee&&y&srve&&d&&print

Create A New User
Node Status?
node history
Node Type: note [id://233227]
help
Chatterbox?
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others studying the Monastery: (5)
As of 2017-12-18 06:25 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
What programming language do you hate the most?

Results (468 votes). Check out past polls.

Notices?