in reply to more efficient regular expression please
This seems to do what you want, if I understand you correctly.
$line =~ s[v?a?c?a?t?i?o?n\.msg][];
Update: Right idea, wrong execution. See 271190 below :( I think this is better.
$line =~ s[(?:(?:(?:(?:(?:(?:v?a)?c)?a)?t)?i)?o)?n.msg][];
Test code
#! perl -slw use strict; # Set up some test data. my $text = 'The quick brown fox jumps over the lazy dog'; my @tests = map{ my $t = $text; substr($t, rand( length $text ), 0 ) = $_; $t; } map{ substr 'vacation.msg', $_ } 0 ..6; print "Before\n"; print for @tests; # s[v?a?c?a?t?i?o?n\.msg][] for @tests; print "\nAfter\n"; print for @tests; __END__ P:\>junk Before The quick vacation.msgbrown fox jumps over the lazy dog The quick brown fox jumps over the laacation.msgzy dog The quick bcation.msgrown fox jumps over the lazy dog Theation.msg quick brown fox jumps over the lazy dog The quick brown fotion.msgx jumps over the lazy dog The quick brown fox jumps ovion.msger the lazy dog Thon.msge quick brown fox jumps over the lazy dog After The quick brown fox jumps over the lazy dog The quick brown fox jumps over the lazy dog The quick brown fox jumps over the lazy dog The quick brown fox jumps over the lazy dog The quick brown fox jumps over the lazy dog The quick brown fox jumps oer the lazy dog The quick brown fox jumps over the lazy dog
Note: If the character(s) of the 'other text' immediately preceding the partial insertion match the omitted part of the insertion, then they are indistinguishable from the case where the insertion was longer and are also removed as in the second from last test shown above.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: more efficient regular expression please (parens)
by tye (Sage) on Jul 03, 2003 at 15:11 UTC | |
by BrowserUk (Patriarch) on Jul 03, 2003 at 15:33 UTC | |
|
Re: Re: more efficient regular expression please
by Not_a_Number (Prior) on Jul 03, 2003 at 15:09 UTC | |
by BrowserUk (Patriarch) on Jul 03, 2003 at 15:23 UTC |