正则表达式匹配ababba等字符串

标签 regex pcre

Write an expression to match strings like a, aba, ababba, ababbabbba, etc. The number of consecutive b increases one by one after each a.


我正在学习正则表达式,并在几天的正则表达式测试中苦苦挣扎,但仍然不能完全正确。
根据描述,正则表达式应匹配并在以下情况下失败:
合格案例:
  • a
  • aba
  • ababba
  • ababbabbba
  • ababbabbbabbbba

  • 失败案例:
  • aa
  • abbaa
  • aabb
  • abababa
  • ababbba

  • 这是what I tried so far
    ^a((b(?2)?)a)?(?1)*$
    
    我正在考虑使用递归,但是我不知道如何在满足每个b后仅添加一个a来实现递归。所以我的解决方案还传递了abbaababbba等。
    有任何想法吗?我错过了什么?

    最佳答案

    基于@Michails great answer-我玩游戏并尝试将其设置为12个字符以下。 With 10 (demo)

    (b\1|^a)+$
    
    我仍然想知道它是否工作正常。它肯定是faster with start anchor (demo)

    关于正则表达式匹配ababba等字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64748441/

    相关文章:

    jQuery 正则表达式问题 - 简单匹配

    PHP PCRE 允许字符串中的嵌套模式(递归)

    java - 可以编写 Perl/Java/etc 正则表达式来匹配十进制(非)质数吗?

    正则表达式子程序在 Npp 中工作,但在 PCRE 中表现奇怪

    java - 如何在 android 中为此创建正则表达式?

    javascript - 油猴Javascript : how to loop through all text and change only whole words?

    java - 如何替换: [text](link) with <a href ="link">text</a> in java?

    javascript - 如何从 JavaScript 列表中检查单词相似度(无需循环遍历整个字典)?

    php - 如果重复在括号中,则可变长度后视编译。为什么?

    PHP:Preg 替换括号?