问题描述
如果我有一个字符串,并且我需要编写一个正则表达式模式来查找仅与a
和aa
匹配的字符串,但不能超过2个连续的a
。例如,baaab
不是匹配项,因为3个a
同时出现,而abaa
是匹配项。我可以为此编写正则表达式模式吗?
这是我尝试过的东西:
-
pattern = 'a{1,2}'
,但此模式也匹配'baaab'
。
-
pattern = 'a{1,2}[^a]'
,但与'abaa'
不匹配
-
pattern = 'a{1,2}[^a]?'
,但它也与'baaab'
相匹配
那我应该使用什么正确的模式?
解决方法
您可以使用否定的超前断言来强制三个或三个以上的a不出现:
^(?!.*aaa).*a{1,2}.*$