解释这个正则表达式:(?:| {} I)

时间:2012-03-14 14:49:25

标签: regex

我不是正则表达式的新手,我一直都在使用它们。除此之外,我只是不明白这个。这是完整的表达式:

/^(?:|{}I )am on (.+)\$/

除了(?:|{}I )部分之外,我理解这个正则表达式中的所有内容,以及它在整个正则表达式的上下文中的关系。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:8)

该部分匹配字符串最开头的子模式,可以是:

  • 任何内容(?:|之间的部分为空)或

  • 一个开口大括号{,后面跟着一个大括号},后跟一个字母I,后跟一个空格字符。

?:表示它无法捕获,因此第一个捕获的子模式为(.+),而不是(?:|{}I )

通常,{}字符在正则表达式中用于量化某种模式(例如\d{0,5}表示0到5位数),但在这种情况下它们没有特殊意思是因为它们之间没有数字或逗号。

关于整个正则表达式,我猜测它应该匹配一个字符串,该字符串以“am on ...”开头,或“{}我在......”,尽管我没有想法为什么需要花括号或为什么$在最后用\进行转义。