如何为正则表达式重复设置上限

问题描述

如果我有一个字符串,并且我需要编写一个正则表达式模式来查找仅与aaa匹配的字符串,但不能超过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}.*$

Demo