Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask
 
PerlMonks  

Re^2: creating a regular expression's alternation dynamically?

by integral (Hermit)
on Aug 06, 2004 at 14:39 UTC ( #380572=note: print w/ replies, xml ) Need Help??


in reply to Re: creating a regular expression's alternation dynamically?
in thread creating a regular expression's alternation dynamically?

In the join, you might want to map quotemeta over @list so that any meta-chars (particulary |) get escaped.

Also you have to be careful that none of the strings are prefixes of another string, otherwise you'll find that ordering is significant in an alternation.

--
integral, resident of freenode's #perl


Comment on Re^2: creating a regular expression's alternation dynamically?
Download Code
Replies are listed 'Best First'.
Re^3: creating a regular expression's alternation dynamically?
by mifflin (Curate) on Aug 06, 2004 at 17:27 UTC
    yep, good point, thanks!
    use strict; use warnings; # create alternation my @list; while (<DATA>) { chomp; push @list, $_; } my $regex = '^(' . join('|', map {quotemeta} @list) . ')$'; my $s = 'huey'; print "regex = $regex\n"; print "match:\t$1\n" if $s =~ m/$regex/; __DATA__ huey de|wey louie
    output is...
    # perl test.pl regex = ^(huey|de\|wey|louie)$ match: huey

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others romping around the Monastery: (7)
As of 2015-07-30 05:46 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (270 votes), past polls