Re: OT: simple regex question

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 2007-04-23 at 14:05 +0200, Dario Lesca wrote:
> Il giorno lun, 23/04/2007 alle 12.36 +0100, Matt Davey ha scritto:
> 
> > echo "aa bb cc dd" | perl -pe 'exit(!(/(?=.*\bbb\b)(?=.*\bdd\b)/));'
> >     && echo found
> 
> Ok, Work!
> 
> last question ... (and many thanks if you have a little time to spend
> for me)
> 
> if I want convert this format into if/else statement.... like this:
> 
> $str="aa bb cc dd"
> if ($str =~ /.*(\bb|dd)\b/i)
> {
>         print "***\nYes, Match!\n***\n";
> }
> else
> {
>         print "Non match!\n";
> }
> 
> It's possible? .. (I am not a perl guru, then I do not how to convert
> the previous format in this newer) ....

It's pretty much as you write it above, just a bit more concise to fit
on the command line:

echo "aa bb cc dd" | perl -ne 'if (/(?=.*\bbb\b)(?=.*\bdd\b)/) {print
"found\n"} else {print "not found\n"};'

Or (TMTOWTDI) , using the ? tertiary operator:
echo "aa bb cc dd" | perl -ne 'print (/(?=.*\bbb\b)(?=.*\bdd\b)/ ?
"found\n" : "not found\n");'

Or you can leave the perl bit alone and use the shell:
echo "aa bb cc dd" |
  (perl -pe 'exit(!(/(?=.*\bbb\b)(?=.*\bdd\b)/));'  && echo found ) || echo not found

Matt

Matt Davey		What has four legs and one arm?	
mcdavey@xxxxxxxxxxxxxx 	     A happy Rottweiler.


[Index of Archives]     [Current Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite News]     [Yosemite Photos]     [KDE Users]     [Fedora Tools]     [Fedora Docs]

  Powered by Linux