If there was no x in the comment the second one would still match at the final x. Could it be that the pattern you want is something like $str =~ m/(^|$c) x/? Because even if there wasn't an x in the comment in the latter example, your pattern would still match the final x. Because it is an x preceeded by 0 comments.

In general you have a more basic problem. Which is that you're trying to use regular expressions for parsing, which they are poorly suited for. Instead you want to use regular expressions for tokenizing, and then move parsing logic into code. The basic trick for that is to use pos and the \G assertion liberally within regular expressions using the /g modifier.


In reply to Re: How do I avoid regex engine bumping along inside an atomic pattern? by tilly
in thread How do I avoid regex engine bumping along inside an atomic pattern? by zemane

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.