【发布时间】:2011-01-21 09:14:38
【问题描述】:
我正在尝试开发一种相当快速的全文搜索。它将读取索引,并且理想情况下应该只在一个正则表达式中运行匹配。
因此,我需要一个仅在包含某些单词时才匹配行的正则表达式。
例如对于
my $txt="one two three four five\n".
"two three four\n".
"this is just a one two three test\n";
只有第一行和第三行应该匹配,因为第二行不包含单词“one”。
现在我可以在一段时间内遍历每一行()或使用多个正则表达式,但我需要快速解决方案。
这里的例子: 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);
没有输出。
总结: 我需要一个正则表达式来匹配包含多个单词的行,并返回这些整行。
提前感谢您的帮助!我尝试了很多,但就是无法正常工作。
【问题讨论】: