Perl-Regex-match-Linien, die mehrere Wörter enthalten

Ich versuche zu entwickeln, die eine ziemlich schnelle Volltextsuche. Es wird der index gelesen wird, und sollte idealerweise führen Sie den Abgleich in nur einem regex.

Deshalb brauche ich eine regex, die Spiele Linien nur dann, wenn bestimmte Wörter enthalten sind.

E. g. für

my $txt="one two three four five\n".
        "two three four\n".
        "this is just a one two three test\n";

Nur Zeile eins und drei abgestimmt werden sollte, da die Zeile zwei enthält nicht das Wort "man".

Nun, ich könnte gehen über jeder Zeile in einer while (), oder verwenden Sie mehrere regexes, aber ich brauche meine Lösung schnell sein.

Beispiel von hier:
http://www.regular-expressions.info/completelines.html
("Finding Linien Enthält oder Nicht Enthält Bestimmte Wörter")

ist, was ich brauche. Allerdings kann ich es nicht zu funktionieren in Perl. Habe viel versucht, aber es funktioniert einfach nicht kommen mit jeder Folge.

my $txt="one two three four five\ntwo three four\nthis is just a one two three test\n";
my @matches=($txt=~/^(?=.*?\bone\b)(?=.*?\btwo\b)(?=.*?\bthree\b).*$/gi);
print join("\n",@matches);

Gibt keine Ausgabe.

In der Zusammenfassung:
Ich brauche einen regulären Ausdruck für Zeilen, in denen mehrere Wörter, und die Rückkehr sind diese ganzen Linien.

Dank im Voraus für Eure Hilfe! Ich habe schon so viel ausprobiert, aber einfach nicht bekommen es funktioniert.

InformationsquelleAutor Scoox | 2011-01-21
Schreibe einen Kommentar