【问题标题】:How to set a upper limit on regex repetition如何设置正则表达式重复的上限
【发布时间】:2020-08-11 11:01:25
【问题描述】:

如果我有一个字符串并且我需要编写一个正则表达式模式来查找仅匹配 aaa,但不超过 2 个连续的 a。例如,baaab 不匹配,因为 3 个 a 一起出现,但 abaa 是匹配的。我可以为此目的编写一个正则表达式模式吗?

这是我尝试过的:

  • pattern = 'a{1,2}',但此模式也匹配 'baaab'
  • pattern = 'a{1,2}[^a]',但无法匹配 'abaa'
  • pattern = 'a{1,2}[^a]?',但它也匹配 'baaab'

那么我应该使用的正确模式是什么?

【问题讨论】:

标签: regex


【解决方案1】:

您可以使用否定的前瞻断言来强制三个或更多 a 不出现:

^(?!.*aaa).*a{1,2}.*$

Demo

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-16
    • 2017-01-09
    • 1970-01-01
    • 1970-01-01
    • 2017-11-23
    • 1970-01-01
    相关资源
    最近更新 更多