Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我想创建一个匹配的模式
"foo | bar" "baz | foo" "foo & bar" "baz ; bar"
也就是说,“关键字”是“foo”、“bar”和“baz”。
至少要出现2个。
他们的顺序无关紧要。
它们应有“;”、“&”或“|” 介于两者之间。
我可以创建一个表达式来匹配这个吗?
我不是在寻找“硬编码”的,例如
(foo|bar|baz)[\|&;](foo|bar|baz)
而是一种更“通用”的方法,因为关键字列表实际上要大得多。
您可以编写如下内容:
^(?=\w)((^|[\|&;])(foo|bar|baz|...other.keywords...)){2,}"
(免责声明:未经测试。)
我认为您的“硬编码”解决方案与正则表达式自己获得的结果一样接近,但假设这是在某些脚本环境中,您可以将更通用的正则表达式与一些程序代码结合起来。
例如,您可以捕获具有类似模式的任何两个单词,/([a-z])[/|&;]([a-z])/然后根据列表或哈希表检查找到的单词,看看您是否有正确的匹配。
/([a-z])[/|&;]([a-z])/