Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer

Re: multiple options for pattern match help

by lima1 (Curate)
on Jan 08, 2008 at 15:37 UTC ( #661110=note: print w/replies, xml ) Need Help??

in reply to multiple options for pattern match help

if ($string =~ m{(int|char|bool|long)}) { print "found $1\n"; }
If you don't need to know which type matched, use
if ($string =~ m{(?:int|char|bool|long)}) { print "found\n"; }
This can be significantly faster, especially for big strings. Update: Thanks sundialsvc4 :).

Replies are listed 'Best First'.
Re^2: multiple options for pattern match help
by sundialsvc4 (Abbot) on Jan 08, 2008 at 16:46 UTC

    To clarify what is meant here:   in the regular expression syntax, parentheses normally imply grouping in the sense that you can subsequently extract the substring that matched that particular group. In the case at bar, if the result is True, the special-variable $1 will contain what matched the first group, $2 the second group (if any), and so on. So, $1 would contain one of: int, char, bool, long.

    If you don't need to know what matched, the ?: construct tells the regular-expression parser that you're using the parentheses only to express a set of alternatives; that you don't need to subsequently use $1 and so-on. So, Perl won't bother to populate those variables (at least for that group...), and this saves time. You'll know whether or not the expression matched, but you won't know exactly what matched that group.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://661110]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (5)
As of 2021-04-19 13:43 GMT
Find Nodes?
    Voting Booth?

    No recent polls found