REGEX - 如何逐句检查一组单词?
REGEX - How to check for a group of words sentence by sentence?
我的任务是检查文件中句子中是否存在特定单词。该文件很大,所以我只包含了下面的一小部分,这给我带来了问题。
Important COVID-19 travel guidance
The Foreign, Commonwealth &
Development Office currently advises British nationals against all but
essential international travel. Travel to some countries and
territories is currently exempted.
This advice is being kept under constant review. Travel disruption is
still possible and national control measures may be brought in with
little notice, so check our travel guidance.
我需要检查所有这些单词 advise
、against
、all
、travel
和 to
是否都在这个句子的任何一个句子中文本。单词需要按此顺序排列,但其他单词可以介于它们之间。我正在使用 PHP 所以我需要一个 PCRE 兼容的正则表达式。
到目前为止,我已经通过使用 /advise.*against.*all.*travel.*to/i
成功地匹配了所有单词,但是这个正则表达式正在查看所有文本(不仅仅是逐句),可以看到 here
在上面的文本部分中,我希望这个正则表达式不匹配任何内容,因为并非所有单词都出现在任何单个句子中。
您在通配符 (.
) 上使用了贪婪量词 (*
),因此它的搜索方式超出了句子范围,因为它不知道何时停止。您需要告诉您的正则表达式只查找一个句子。最简单的方法是告诉它句子的结尾是什么。您可能不需要通配符 (.
),而是任何不是句末标点符号的东西。
而不是 .*
可以尝试 [^.!?]*
或 [\w\d\s,;:]*
的方法,具体取决于您要考虑的句子。
我的任务是检查文件中句子中是否存在特定单词。该文件很大,所以我只包含了下面的一小部分,这给我带来了问题。
Important COVID-19 travel guidance
The Foreign, Commonwealth & Development Office currently advises British nationals against all but essential international travel. Travel to some countries and territories is currently exempted.
This advice is being kept under constant review. Travel disruption is still possible and national control measures may be brought in with little notice, so check our travel guidance.
我需要检查所有这些单词 advise
、against
、all
、travel
和 to
是否都在这个句子的任何一个句子中文本。单词需要按此顺序排列,但其他单词可以介于它们之间。我正在使用 PHP 所以我需要一个 PCRE 兼容的正则表达式。
到目前为止,我已经通过使用 /advise.*against.*all.*travel.*to/i
成功地匹配了所有单词,但是这个正则表达式正在查看所有文本(不仅仅是逐句),可以看到 here
在上面的文本部分中,我希望这个正则表达式不匹配任何内容,因为并非所有单词都出现在任何单个句子中。
您在通配符 (.
) 上使用了贪婪量词 (*
),因此它的搜索方式超出了句子范围,因为它不知道何时停止。您需要告诉您的正则表达式只查找一个句子。最简单的方法是告诉它句子的结尾是什么。您可能不需要通配符 (.
),而是任何不是句末标点符号的东西。
而不是 .*
可以尝试 [^.!?]*
或 [\w\d\s,;:]*
的方法,具体取决于您要考虑的句子。