[Chicago-talk] Regular expression question

Jonathan Rockway jon-chicagotalk at jrock.us
Sat May 2 13:04:49 PDT 2009

* On Fri, May 01 2009, Andrew Rodland wrote:
> On Friday 01 May 2009 06:08:29 pm Michael Potter wrote:
>>  Mongers,
>> What is the cleanest way to combine these three regular expressions:
>> $Note =~ s/^Eft /EFT /;
>> $Note =~ s/ Eft / EFT /;
>> $Note =~ s/ Eft$/ EFT/;
> This gives _nearly_ the same behavior and might work within your spec:
> s/\bEft\b/EFT/;
> More complicated and not tested but _should_ match your question exactly:
> s/(?:^|(?< ))Eft(?:$|(?= ))/EFT/;

If the \b regex doesn't work, how about s/(^| )Eft( |$)/$1EFT$2/g ?
That is usually how I represent this sort of operation.  (If you want to
keep part of the input, just capture it and put it into the output
explicitly.  [Perl 5.10 also has \k, but that won't work in this case.])

There is one difference though.  Your original regexs would change the

   Eft blah blah Eft blah blah Eft


   EFT blah blah EFT blah blah EFT

(since each regex is allowed to match once, and each does).

Without /g, my regex would change that to:

   EFT blah blah Eft blah blah Eft

Also, can someone unban my real address from the list?  Now that a
certain Reign Of Terror has ended, I think this is just an
administrative error.

Jonathan Rockway

print just => another => perl => hacker => if $,=$"

More information about the Chicago-talk mailing list