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 }