0

我想创建一个匹配的模式

"foo | bar"
"baz | foo"
"foo & bar"
"baz ; bar"

也就是说,“关键字”是“foo”、“bar”和“baz”。

至少要出现2个。

他们的顺序无关紧要。

它们应有“;”、“&”或“|” 介于两者之间。

我可以创建一个表达式来匹配这个吗?

我不是在寻找“硬编码”的,例如

(foo|bar|baz)[\|&;](foo|bar|baz)

而是一种更“通用”的方法,因为关键字列表实际上要大得多。

4

2 回答 2

1

您可以编写如下内容:

^(?=\w)((^|[\|&;])(foo|bar|baz|...other.keywords...)){2,}"

(免责声明:未经测试。)

于 2013-05-24T21:08:21.503 回答
0

我认为您的“硬编码”解决方案与正则表达式自己获得的结果一样接近,但假设这是在某些脚本环境中,您可以将更通用的正则表达式与一些程序代码结合起来。

例如,您可以捕获具有类似模式的任何两个单词,/([a-z])[/|&;]([a-z])/然后根据列表或哈希表检查找到的单词,看看您是否有正确的匹配。

于 2013-05-24T21:09:19.523 回答