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.


Examine what is said, not who speaks.
"Efficiency is intelligent laziness." -David Dunham
"When I'm working on a problem, I never think about beauty. I think only how to solve the problem. But when I have finished, if the solution is not beautiful, I know it is wrong." -Richard Buckminster Fuller



In reply to Re: more efficient regular expression please by BrowserUk
in thread more efficient regular expression please by Anonymous Monk

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.