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

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/; }


Replies are listed 'Best First'.
Re: regexp question
by Abigail-II (Bishop) on Aug 19, 2002 at 16:01 UTC
    { local $" = "|"; $line =~ /@{[map {quotemeta} @query]}/; } worked grrreat... :-)

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


        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.


Log In?

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

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (9)
As of 2016-10-25 19:23 GMT
Find Nodes?
    Voting Booth?
    How many different varieties (color, size, etc) of socks do you have in your sock drawer?

    Results (327 votes). Check out past polls.