A couple of useful features are the ability to pre-compile a regular expression, storing it in a variable for later use and the ability to use extended syntax to break the pattern up with whitespace and comments to make it more readable. Here is your pattern given such treatment.

my $rxLine = qr {(?xs) # Use extended regular expression syntax (x) # allowing whitespace in the pattern for # readability, and comments. Allow the . # (regexp wildcard metacharacter) to match # a newline (s) ^ # Anchor pattern to start of string ( # Open capture group (1st) [^{};]+ # Negated character class, anything except {, } # or ; characters. + quantifier is 1 or more # of, greedy matching so will match as many # as possible [{};] # Character class, any of {, } or ; characters. # No quantifier so exactly 1 of ) # Close capture group (1st) ( # Open capture group (2nd) \s* # Whitespace character. * quantifier is 0 or more # of, greedy \S+ # Non-whitespace character. 1 or more, greedy .* # Any character (including newline because of the # s modifier). 0 or more, greedy ) # Close capture group (2nd) $ # Anchor pattern to end of string }; if( $line =~ $rxLine ) { # Do something here }

Have a look at the documentation links provided by kennethk for explanations of things like character classes and greedy versus non-greedy quantifiers.

I hope this is helpful.

Cheers,

JohnGG


In reply to Re: Help with Perl RE by johngg
in thread Help with Perl RE by newbie2009

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.