这个正则表达式中的 (^?)* 表示什么?

我有这个正则表达式:

^(^?)*\?(.*)$

如果我理解正确,该正则表达式的作用如下:

  • ^ - 从字符串开头开始匹配
  • (^?)\* - 我不知道,但它将其存储在 $1 中
  • \? - 匹配问号
  • (.\*)$ - 匹配到字符串结尾的任何内容

那么(^?)*的意思是什么呢?

点赞
用户23283
用户23283

(^?) 只是查找字面上的字符 ^。在正则表达式模式中,^ 字符只有在模式的第一个字符或分组匹配的第一个字符 [] 中使用时才具有特殊意义。当在这两个位置之外使用 ^ 时,它被解释为字面意思,表示在输入字符串中查找 ^ 字符。

注意:^ 在第一位和分组位置之外是否被解释为字面意思,取决于正则表达式引擎的具体实现。我对 LUA 不够了解,无法确定它的实现方式。

2013-03-04 16:17:32
用户1751129
用户1751129

在这种情况下,(^?)是指前面的字符串 "^",意思是字面字符 ^,正如Jared所言。欢迎访问regexlib进行进一步的解码。

为您提供所有正则表达式需求:http://regexlib.com/CheatSheet.aspx

2013-03-04 16:19:52
用户64279
用户64279

翻译

据我所见,该表达式的创建者意图是匹配问号前的任意数量的 ^,但只想 捕获 第一个 ^。但是,根据其他人所说,根据引擎的不同,它可能不是一个有效的表达式。

markdown

据我所见,该表达式的创建者意图是匹配问号前的任意数量的 `^`,但只想 _捕获_ 第一个 `^`。但是,根据其他人所说,根据引擎的不同,它可能不是一个有效的表达式。
2013-03-04 16:25:30