in reply to Regular expression for two required words

#!/usr/bin/perl -w use strict; while (<DATA>) { chomp; print; print /(?=.*foo)(?=.*bar)/s ? "\t match \n" : "\t no match \n" +; } __DATA__ foo bar bar foo foo bar baz barbazfoo foofoobar
gives output:
foo bar match bar foo match foo no match bar no match baz no match barbazfoo match foofoobar match
hth!

andy.

Update re jeroenes's points below:
1. I used /s to make '.' match any character, in case fsn's *real* strings weren't all in one line.
2. Yes, or even print grep /(?=.*foo)(?=.*bar)/, <DATA> ; , but I wanted to print the failed matches too. Perhaps print map{ chomp; /(?=.*foo)(?=.*bar)/?"$_ yes \n":"$_ no \n"} <DATA> ;

;)

Replies are listed 'Best First'.
Re:{2} Regular expression and
by jeroenes (Priest) on Nov 13, 2001 at 16:18 UTC
    Two nitbits:
    1. You don't need the 's' modifier there, as the you already have the string in one line;
    2. This is a place to use grep as a filter: @matched  = grep /.../, <DATA>;

    Jeroen

Re: Re: Regular expression and
by fsn (Friar) on Nov 13, 2001 at 16:11 UTC
    Wow! Exactly on the spot! Thankyou! (Getting an answer in 17 minutes. I'm amazed!)