我想要一个正则表达式来查找最多出现一次的子字符串 bab。 (在字母表 {a,b} 中)
这里我有一个正则表达式,用于在字母表 {a,b} 中最多查找 bb
(a+ba)* + (a+ba)*.b + (a+ba)*.bb.(a+ab)*
我想使用此示例正则表达式,但随后使用 bab 作为子字符串。 我如何扩展此正则表达式以查找最多出现一次的子字符串 bab?
我是不是从这个开始:
(b+ab)* + (b+ab)*b + (a+ba)* + (a+ba)*.b + (a+ba)*.bab.(a+ab)*
最佳答案
如果我理解你的问题,你想匹配最多只有一个“bab”计数的字符串,如果有多个则不匹配。
我们可以为此使用否定前瞻:
https://regex101.com/r/QBe2bD/3
我使用 galabra 发布的测试字符串作为起点。
注意:“babab
”匹配。如果您不想匹配它,您可以使用替代方法,但我将其留作练习。
提示:^(?!.*bab(.*bab|--)).*$
将“--”替换为两个字符,这样您就可以不匹配 babab。
关于regex - 正则表达式 - 最多包含 1 个子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48916643/