2024-09-30 18:12:46 发布
网友
我正在尝试编写一个正则表达式,以查看给定字符串的集合中是否有2个或更多的单词
如果设置为[猫,狗],则:
“帽子里的猫”-错
“猫和狗”-真的
“猫和猫”-真的
我试过这些,但它们不能正常工作:
\bcat\b|\bdog\b{2,} (\bcat\b|\bdog\b){2,}
使用正则表达式可以进行此查询吗
你想要一个简单的真/假匹配结果,还是想要实际捕获匹配的单词
某些正则表达式语言(如PCRE)允许使用(?[Some number])格式的“模式重复”:
(?=(cat|dog).*(?1))
这将查找cat或dog,然后(由于(?1))再次查找cat或dogExample 1
cat
dog
(?1)
如果您希望捕获模式(整个内容或单个单词),可以使用以下选项之一:
((cat|dog).*((?2)))
Example 2
或
(?:(cat|dog).*((?1)))
Example 3
示例2捕获了\1引用中的整个组,捕获的单词分别位于\2和\3
\1
\2
\3
示例3没有捕获整个组,但是它分别捕获了\1和\2中的单词
其他语言(Javascript、Python)可能会以不同的方式处理此问题,因此您可能无法访问(?1)引用
选项1:纯正则表达式
(?:.*(?:\b(?:cat|dog)\b)){2}
如果存在匹配项,则表示存在两个或多个单词
如果您想成为一个纯粹主义者,了解一个本身构成布尔断言(不匹配字符)的正则表达式,我们可以将其包装为前瞻:
^(?=(?:.*(?:\b(?:cat|dog)\b)){2})
选项2:计数匹配项
如果您使用的是编程语言,则此伪代码:
WordsRegex = \b(?:cat|dog)\b MatchCount = count matches(WordsRegex, string) TwoOrMore = ( MatchCount > 1)
你想要一个简单的真/假匹配结果,还是想要实际捕获匹配的单词
某些正则表达式语言(如PCRE)允许使用(?[Some number])格式的“模式重复”:
这将查找
cat
或dog
,然后(由于(?1)
)再次查找cat
或dog
Example 1如果您希望捕获模式(整个内容或单个单词),可以使用以下选项之一:
Example 2
或
Example 3
示例2捕获了
\1
引用中的整个组,捕获的单词分别位于\2
和\3
示例3没有捕获整个组,但是它分别捕获了
\1
和\2
中的单词其他语言(Javascript、Python)可能会以不同的方式处理此问题,因此您可能无法访问
(?1)
引用选项1:纯正则表达式
如果存在匹配项,则表示存在两个或多个单词
如果您想成为一个纯粹主义者,了解一个本身构成布尔断言(不匹配字符)的正则表达式,我们可以将其包装为前瞻:
选项2:计数匹配项
如果您使用的是编程语言,则此伪代码:
相关问题 更多 >
编程相关推荐