RE: Matching at least $x words out of @words

"Allen, Greg" <[email protected]>
Newsgroups gmane.comp.lang.perl.fun
Message-ID <8D45010F07D19E44A8D3FDEF7A68BC770173CEAF@logisexm006.leh.lbcorp.lehman.com>
golfed for fun...

    my @words = qw( foo bar foobar );
    my $re = qr/@{[map "(?=.*(\Q$_\E))?", @words]}/x;
    my @matches = grep defined, "foo bar baz" =~ $re

Greg

-----Original Message-----
From: [email protected] [mailto:[email protected]] 
Sent: Friday, May 06, 2005 12:22 PM
To: [email protected]
Subject: Re: Matching at least $x words out of @words

    my @words = qw( foo bar foobar );
    $re = join '', map { '(?=.*(' . (quotemeta) . '))?' } @words;
    $re = qr/$re/;
    my @matches = grep defined, "foo bar baz" =~ $re;

The capturing parent allow you know which word was matched.

-- 
 Philippe "BooK" Bruhat

------------------------------------------------------------------------------
This message is intended only for the personal and confidential use of the designated recipient(s) named above.  If you are not the intended recipient of this message you are hereby notified that any review, dissemination, distribution or copying of this message is strictly prohibited.  This communication is for information purposes only and should not be regarded as an offer to sell or as a solicitation of an offer to buy any financial product, an official confirmation of any transaction, or as an official statement of Lehman Brothers.  Email transmission cannot be guaranteed to be secure or error-free.  Therefore, we do not represent that this information is complete or accurate and it should not be relied upon as such.  All information is subject to change without notice.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.