Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot
 
PerlMonks  

regexp question

by kidd (Curate)
on Aug 19, 2002 at 15:53 UTC ( #191209=perlquestion: print w/ replies, xml ) Need Help??
kidd has asked for the wisdom of the Perl Monks concerning the following question:

Hello monks...

Yesterday you helped me with some problem and I was able to solve it, thanks.

Now I have a question:
Is there a way to check if a line has a word of an array(that has a different number of words) using regexp?...

Some example:

my @query = ('red', 'blue', 'white'); my $line = "That is a blue wall";
My goal is to check trough the @query ans see if any word is in $line. Considering that I will not know the values in @query.

At the moment Im using a foreach() loop, that Im hoping to kill with a one liner:

foreach my $query(@query){ next if $query eq ''; print "I found: $query" if $line =~ /\Q$query/; }

Thanks...

Comment on regexp question
Select or Download Code
Re: regexp question
by Abigail-II (Bishop) on Aug 19, 2002 at 16:01 UTC
    { local $" = "|"; $line =~ /@{[map {quotemeta} @query]}/; }
      Thanks...it worked grrreat... :-)

      Just one more thing...how could I check that all the words in the array are in the line?

      Thanks

        By not being smart and wanting it in a single regexp. Use your foreach loop and a counter. Increment the counter for each match found, and compare after the loop whether the counter equals the size of the array. Or just bail out whenever there isn't a match, depending a bit on what exactly you want to do.

        Abigail

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://191209]
Approved by Rex(Wrecks)
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others imbibing at the Monastery: (6)
As of 2014-07-13 15:30 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    When choosing user names for websites, I prefer to use:








    Results (250 votes), past polls