我有一个单词列表 - "foo"
, "bar"
, "baz"
- 我想写一个正则表达式这将匹配包含至少 2 个字符串的字符串。例如,"foo baz"
应该匹配,而 "ba foo z"
不应该匹配。
明显的解决方案 "(foo|bar|baz).*(foo|bar|baz)"
有效,但我发现它不能令人满意,因为它列出了单词两次。如果我有 25 个单词而不是 3 个怎么办?如果我正在寻找包含至少 4 个给定单词而不是 2 个的字符串怎么办?
最佳答案
听起来你并不是在寻找确切的词,所以 Donkey 的解决方案可能不是你想要的
((foo|bar|baz).*?){2}
它在文本中搜索这些字符串中的任何一个,然后是任何字符,直到再次找到这些可选字符串之一,并且由于惰性 any 字符部分将通过不匹配任何内容来实现,因此匹配完成。
如果您希望它匹配多行,请务必打开全部点,或使用\s\S 代替点。
关于regex - 匹配列表中至少两个单词的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17172433/