我想创建一个匹配
的模式"foo | bar"
"baz | foo"
"foo & bar"
"baz ; bar"
也就是说,“关键字”是“foo”,“bar”和“baz”。
至少有2个出现。
他们的命令并不重要。
他们应该有“;”,“&”或“|”介于两者之间。
我可以创建一个表达式来匹配这个吗?
我不是在寻找“硬编码”的,例如
(foo|bar|baz)[\|&;](foo|bar|baz)
相反,这种做法更具“通用性”,因为关键字列表实际上要大得多。
答案 0 :(得分:1)
你可以这样写:
^(?=\w)((^|[\|&;])(foo|bar|baz|...other.keywords...)){2,}"
(免责声明:未经测试。)
答案 1 :(得分:0)
我认为你的“硬编码”解决方案与正则表达式一样接近,但假设这是在某些脚本环境中,你可以将更通用的正则表达式与一些过程代码结合起来。
例如,您可以使用类似/([a-z])[/|&;]([a-z])/
的模式捕获任意两个单词,然后检查针对列表或哈希表找到的单词,以查看您是否具有正确的匹配。