gpt4 book ai didi

regex - 用正则表达式匹配 a^n A^n

转载 作者:行者123 更新时间:2023-12-04 22:37:33 27 4
gpt4 key购买 nike

我们正在学习正则语言和正则表达式之间的区别,老师解释说语言

a^n b^n

不是常规的,但她说大多数正则表达式口味都可以匹配
a^n A^n

她为我们的额外学分作业问题提供了这个问题。我们已经挣扎了几天了,真的可以使用一些指导。

最佳答案

老师给了一个巨大的提示,将字母限制为{a, A} .解决这个问题的关键是意识到在不区分大小写的模式下,a匹配 A反之亦然。问题的另一个组成部分是反向引用匹配。

此模式将匹配 a{n}A{n}一些 n ( as seen on rubular.com ):

^(?=(a*)A*$)\1(?i)\1$

这个怎么运作

该模式的工作原理如下:
  • ^(?=(a*)A*$) - anchor 定在字符串的开头,我们使用正向前瞻来查看是否可以匹配(a*)A*直到字符串结束
  • 如果我们能成功地做出这个断言,那么 \1捕获 a{n} 的序列
  • 如果断言失败,则字符串不可能是 a{n}A{n} ,因为它甚至不是 a*A*
  • 然后我们匹配 \1(?i)\1$ ,即 a{n}\1 捕获,然后在不区分大小写的模式下 (?i) , 我们匹配 a{n}再次直到字符串结束
  • 因此,由于:
  • 字符串是 a*A*
  • \1a{n}
  • \1(?i)\1只能是 a{n}A{n}

  • 相关问题
  • Case sensitive and insensitive in the same pattern
  • How does the regular expression ‘(?<=#)[^#]+(?=#)’ work?

  • 引用
  • regular-expressions.info/Lookaround , Grouping and backreferences
  • Modifiers (特别是只为部分正则表达式打开和关闭模式)

  • 也可以看看
  • Why is {a^nb^n | n >= 0} not regular?
  • Wikipedia/Regular expression: Patterns for non-regular languages
  • 关于regex - 用正则表达式匹配 a^n A^n,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3127606/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com