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

Sorry. I misunderstood your requirement (though it could have been stated a little more clearly:^).

This one (I think does what you want, edge case as well and is relatively simple.

$s = "xx|xx|xxxx|xx|xxx|xx|xx|xx"; $s =~ s[(?<!x)(x)(x)(?!x)][$1 $2]g; print $s; x x|x x|xxxx|x x|xxx|x x|x x|x x

Update Thinking about it, stick with tachyon's as this will fall over if your data contains any occurance of xx without |'s or x's on either side.


Examine what is said, not who speaks.

The 7th Rule of perl club is -- pearl clubs are easily damaged. Use a diamond club instead.

Replies are listed 'Best First'.
Re: Re: Re: Re: A complex recursive regex,help
by OM_Zen (Scribe) on Feb 06, 2003 at 04:45 UTC
    Hi ,

    The cases where the xx appears last are clearly taken care of by your regex BrowserUk,the part I am not understanding is that you are saying that it will fall over if yout date containes any occurances of xx without |'s or x's on either side, please give an instance of this BrowserUk, in terms of data to facilitate the understanding as yoru regex is doing pretty good in all data strings

      An example where mine falls over, but I think tachyon's wouldn't.

      $t = "xyxxy|xx|xy|xx|yy|yxxy xx x" $t =~ s[(?<!x)(x)(x)(?!x)][$1 $2]g; print $t xyx xy|x x|xy|x x|yy|yx xy x x x

      Examine what is said, not who speaks.

      The 7th Rule of perl club is -- pearl clubs are easily damaged. Use a diamond club instead.