繁体   English   中英

如果所有给定单词都在字符串中,则匹配正则表达式

[英]Regular expression to match if all given words are in a string

假设我有这样的查询:“一二三”,如果我用|替换空格 (管道符)如果字符串包含一个或多个单词,我可以匹配它。 这就像逻辑OR。

是否存在类似的逻辑AND。 只要字符串中存在所有单词,它就应该匹配而不管单词排序。

不幸的是,我离开了我的掌握正则表达式书:(

编辑:我正在使用Javascript,查询可以包含任意数量的单词。

尝试前瞻断言:

(?=.*one)(?=.*two)(?=.*three)

但是如果使用三个单独的正则表达式或更简单的字符串搜索操作会更好。

对此没有什么好处。 您可以相当容易地匹配任何相关单词的三次出现:

(?:\b(?:one|two|three)\b.*){3}

但这与“一二三”一样容易“匹配”。

您可以使用像Gumbo描述的前瞻断言。 或者你可以写出排列,如下:

(?\bone\b.*\btwo\b.*\bthree\b|\btwo\b.*\bone\b.*\bthree\b|\bone\b.*\bthree\b.*\btwo\b|\bthree\b.*\bone\b.*\btwo\b|\bthree\b.*\btwo\b.*\bone\b|\btwo\b.*\bthree\b.*\bone\b)

这显然是可怕的。

长话短说,做三场独立比赛要好得多。

做三个单独的比赛。

在一个中完成它的唯一原因是,如果您需要它以特定顺序找到它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM