regex - 匹配列表中至少两个单词的正则表达式

标签 regex language-agnostic

我有一个单词列表 - "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/

相关文章:

language-agnostic - 实现插件系统有哪些不同的方法?

正则表达式查找不连续的重复单词(即在字符串中出现多次)

language-agnostic - 密码学的创造性用途超出通常的加密/身份验证

java - gradle基于复制创建新的java类

python - django url 中 uuid 十六进制值的正则表达式

regex - 使用正则表达式查找以字符开头和结尾的字符串组

exception - 您更喜欢如何组织异常定义?

regex - 如何使用Perl在字符串中找到子字符串?

javascript - 如何获取 "add_"前面的字符

algorithm - 简化省份生成