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

Bar*_*eyn 4 regex

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

/^(?:|{}I )am on (.+)\$/
Run Code Online (Sandbox Code Playgroud)

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

任何帮助将非常感激.

Bol*_*ock 8

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

  • 无论是什么(之间的部分?:|,或为空)

  • 一个开口的花括号,{后面是一个闭合的花括号,}后面I跟着一个空格字符.

?:它没有捕获的手段,所以第一个捕获的子模式(.+)不是(?:|{}I ).

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

关于整个正则表达式,我猜测它应该匹配一个字符串,该字符串以"am on ..."开头,或"{}我在......",但我不知道为什么需要花括号或为什么在最后$使用a \进行转义.