Я пытаюсь разработать довольно быстрый полнотекстовый поиск. Он прочитает индекс и в идеале должен выполнить сопоставление всего за одно регулярное выражение.
Поэтому мне нужно регулярное выражение, которое соответствует строкам, только если содержатся определенные слова.
например. для
my $txt="one two three four five\n".
"two three four\n".
"this is just a one two three test\n";
Должны совпадать только строки 1 и 3, поскольку строка 2 не содержит слова «один».
Теперь я могу просматривать каждую строку время () или использовать несколько регулярных выражений, но мне нужно, чтобы решение было быстрым.
Пример отсюда:
http://www.regular -expressions.info / completelines.html
(«Поиск строк, содержащих или не содержащих определенные слова»)
это то, что мне нужно. Однако я не могу заставить его работать в Perl. Я много пробовал, но ничего не получилось.
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);
Не выводит.
В итоге:
Мне нужно регулярное выражение для сопоставления строк, содержащих несколько слов, и возвращающих эти целые строки.
Заранее спасибо за помощь! Я так старался, но просто не заставлял его работать.