如何检查文本中的特定短语与正则表达式一起出现

时间:2016-09-23 09:42:57

标签: regex

我希望将字符串中的短语与正则表达式匹配

示例

日志:

  

快速的棕色狐狸跳过懒狗,bla bla,某事   东西

我想要一个可以匹配ex的正则表达式。 "quick brown""over the"甚至更多短语。所以我可以检查一下是否匹配,如果有,那就做一些事情。

如果所有给定的"短语"我希望它给出匹配。存在,但如果我的日志中只有一个存在则不存在。

例如,如果我想在上面的日志中搜索"quick brown""over the",我希望它能够匹配。

但如果日志是

则它不应该匹配
  

"快速的棕色狐狸跳过懒狗,Bla bla,   什么东西"

因为它无法与"quick brown""over the"匹配。

如果日志说

,也不应该给出匹配
  

"快速的棕色狐狸跳过懒狗,bla bla,某事   东西"

因为"quick brown""over the"在那里,但是"快速的棕色"结束" est"所以它也不应该匹配。

我尝试过(quick brown\b|over the\b),但这对我来说并不是很有效,因为如果其中一个词不存在,我仍会得到匹配

它必须是正则表达式,因为我使用的框架将正则表达式作为参数

我知道可以通过某些代码实现相同的目标,但在我的情况下,这不是一个选项。它必须是正则表达式。

1 个答案:

答案 0 :(得分:0)

我在尝试了很多不同的事情之后找到了一个有效的解决方案

(\bquick brown\b).*(\bover the\b)

匹配

  “快速的棕色狐狸跳过懒狗,bla bla,某事   东西“

但不是

  

“快速的棕色狐狸跳过懒狗,Bla bla,   什么东西“

而不是

  

“快速的棕色狐狸跳过懒狗,bla bla,某事   东西“

如果您不关心短语的顺序,可以使用此

(\bquick brown\b).*(\bover the\b)|(\bover the\b).*(\bquick brown\b)

表达式检查quick brownover the之间是否存在任何内容。

您也可以

(\bquick brown\b).+?(\bover the\b)

如果quick brownover the多次出现,那么会产生多个匹配。

在我的情况下,它没有区别,但可能对其他人