I have a string that begins with a variable sequence of characters, which is followed by a constant string that can be used as a unique anchor. I want to strip off the variable stuff at the beginning so that it begins with the anchor. For example, given this:

my $s = 'variable chars anchor want this';
I want to end with this:
$s = 'anchor want this';

I can think of several ways to approach this, but I do not know which might be considered better than others from the standpoint of style or efficiency (not just benchmarking, but also including potential for backtracking). These approaches include:

All of these employ .* (except for the silly constructs, which are left as an exercise for the reader), but I am trying to avoid that idiom by thinking more carefully about my regexen (Death to Dot Star!). I suspect a better regex might be something like a negated character class, but for a group: "match everything from the start of the string that does not match the sequence of characters anchor".

How would you do this, and why?


In reply to Regex style and efficiency by bobf

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.