in reply to Re: Replacing consecutive tokens in 1 pass
in thread Replacing consecutive tokens in 1 pass

Hi ,

Your script gives the output |x|x|foo|bar|x|x|x|x|x|

The post as required needs to retain the 906 and hence , one cannot do a normal "+" search on the digits and also the user string can have a 9[0-9]at any portion of the string like |868969780| , then your scripts turns it to x like this |868x| , and your script is a bit greedy and also changes the pattern to "x" .

Hence we require to have a look_ahead and look_behind positive assertions(here regular width is ok) to have a pattern match of 9[0-9]following a "|" but not including a "|" and followed by a "|" but not including the "|" as the pattern

$str =~ s/(?<=\|)9[0-9](?=\|)/X/g;
This is the extended pattern that shall do it as in my previous post