On Wed, 2003-06-04 at 13:16, Jacob Fugal wrote:
> In short summary, rather than quoting, the regex so far suggested has been:
> 
> s/([^a-zA-Z]*)Booty([^a-zA-Z]*)/\1_Booty_\2/
> 
> This should work AFAIK, but this should also work and IMO a little more 
> flexible:
> 
> s/(?<![a-zA-Z])Booty(?![a-zA-Z])/_Booty_/
> 
> Now I don't know about PHP in particular, I've only had experience with 
> regexes in Perl, but AFAIK this is a standard POSIX regex thing (not 
> perl specific). "(?<!pattern1)pattern2" does a negative look-behind 
> (prematch) so it matches pattern2 as long as it's not preceded by 
> pattern1 (the positive look-behind, to match pattern2 preceded by 
> pattern1, is "(?<=pattern1)pattern2"). "pattern1(?!pattern2)" is the 
> same thing, but look-ahead (post-match). It's positive version is 
> "pattern1(?=pattern2)". The advantage is that nothing has to be 
> captured, and if you want to use the prematch/match/postmatch variables 
> set by evaluating the expression (in perl they're $`, $& and $', 
> respectively) the match variable for something like "Trash some 
> Booty.\n" is just "Booty", not " Booty.\n"
> 

I had to read this about three times, but now I get it. That's cool. 
Maybe needlessly complicated, but cool.

Bryan


____________________
BYU Unix Users Group 
http://uug.byu.edu/ 
___________________________________________________________________
List Info: http://uug.byu.edu/cgi-bin/mailman/listinfo/uug-list

Reply via email to