我希望将字符串中的短语与正则表达式匹配
示例
日志:
快速的棕色狐狸跳过懒狗,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
),但这对我来说并不是很有效,因为如果其中一个词不存在,我仍会得到匹配
它必须是正则表达式,因为我使用的框架将正则表达式作为参数
我知道可以通过某些代码实现相同的目标,但在我的情况下,这不是一个选项。它必须是正则表达式。
答案 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 brown
和over the
之间是否存在任何内容。
您也可以
(\bquick brown\b).+?(\bover the\b)
如果quick brown
和over the
多次出现,那么会产生多个匹配。
在我的情况下,它没有区别,但可能对其他人