PCRE如何匹配多个选项匹配多个选项?

时间:2013-05-24 21:02:29

标签: regex pcre

我想创建一个匹配

的模式
"foo | bar"
"baz | foo"
"foo & bar"
"baz ; bar"

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

至少有2个出现。

他们的命令并不重要。

他们应该有“;”,“&”或“|”介于两者之间。

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

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

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

相反,这种做法更具“通用性”,因为关键字列表实际上要大得多。

2 个答案:

答案 0 :(得分:1)

你可以这样写:

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

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

答案 1 :(得分:0)

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

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