【问题标题】:REGEX - How to check for a group of words sentence by sentence?REGEX - 如何逐句检查一组单词?
【发布时间】:2020-09-24 17:06:29
【问题描述】:

我的任务是检查文件中句子中是否存在特定单词。该文件很大,所以我只在下面包含了一小部分,这给了我一个问题。

重要的 COVID-19 旅行指南

外国、联邦和 发展办公室目前建议英国国民反对除 必不可少的国际旅行。前往一些国家和地区 领地目前被豁免。

我们会不断审查此建议。旅行中断是 仍有可能,可能会采取国家控制措施 很少通知,所以请查看我们的旅行指南。

我需要检查所有这些词 adviseagainstalltravelto 是否在本文的任何一个句子中。单词需要按此顺序排列,但其他单词可以介于它们之间。我正在使用 PHP,所以我需要一个兼容 PCRE 的正则表达式。

到目前为止,我已经设法通过使用 /advise.*against.*all.*travel.*to/i 匹配所有单词,但是这个正则表达式正在查看所有文本(不仅仅是逐句),如 here 所示

在上述文本部分中,我希望这个正则表达式不匹配任何内容,因为并非所有单词都出现在任何单个句子中。

【问题讨论】:

    标签: regex pcre


    【解决方案1】:

    您在通配符 (.) 上使用了贪婪量词 (*),因此它搜索的方式不仅仅是一个句子,因为它不知道何时停止。您需要告诉您的正则表达式只查找一个句子。最简单的方法是告诉它一个句子的结尾。您可能不想要通配符 (.),而是想要任何不是句尾标点符号的东西。

    除了.*,也可以尝试类似[^.!?]*[\w\d\s,;:]* 的方法,具体取决于您要考虑的句子。

    Try it out!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-17
      • 1970-01-01
      • 2021-12-11
      • 2019-01-06
      • 1970-01-01
      • 2011-11-08
      • 2010-11-22
      相关资源
      最近更新 更多