Another option is to anchor a positive look ahead assertion to the
beginning of the line:
m/(?=^.*a).*b/

not so efficient though (-:




On Thu, Aug 28, 2014 at 10:44 AM, Yossi Itzkovich <
[email protected]> wrote:

>  Hi Gabor,
>
>
>
> It looks great (especially the  last one), but assuming I have just few
> components, and the text is big, I guess that restarting regex engine few
> times for the same string is a waste of performance, am I right ?
>
> I guess study() can help here, but I remember reading in the past that
> it’s not a good practice to use it.
>
>
>
> Yossi
>
>
>
> *From:* Perl [mailto:[email protected]] *On Behalf Of *Gabor Szabo
> *Sent:* Thursday, August 28, 2014 9:52 AM
> *To:* Perl in Israel
> *Subject:* Re: [Israel.pm] regex question: When order doesn't matter
>
>
>
>
>
> On Thu, Aug 28, 2014 at 9:28 AM, Yossi Itzkovich <
> [email protected]> wrote:
>
> Hi,
>
>
>
> Sometime I want to find a line that contains 2+ patterns components, but I
> don’t mind the order of the components in the line.
>
> The naïve approach is to do one of the following code options
>
> 1.       /a.+?b/ or /b.+?a/
>
> 2.       /(?:a.+?b)|(?:b.+?a)/    (this one probably is more efficient)
>
>
>
> But I don’t feel comfortable with any of the above  (and when there are
> more than 2 components it gets worse).
>
>
>
> Is there a better way of doing it ?
>
>
>
>
>
>
>
> if (/a/  and /b/) {
>
> }
>
>
>
> and if you have more regexs all of them in @regexes   then
>
>
>
> my @regexes = (qr/a/, qr/b/, qr/c/);
>
>
>
> use List::MoreUtils qw(all);
>
> if (all { /$_/ } @regexes) {
> }
>
>
>
>
>
> Gabor
>
>
>
>
>
> _______________________________________________
> Perl mailing list
> [email protected]
> http://mail.perl.org.il/mailman/listinfo/perl
>
_______________________________________________
Perl mailing list
[email protected]
http://mail.perl.org.il/mailman/listinfo/perl

Reply via email to