2012-03-14 116 views
4

我对正则表达式并不陌生,我一直都在使用它们。除此之外,我只是不明白这一点。这里是表达全:解释这个正则表达式:(?:| {} I)

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

我了解,除了(?:|{}I)部分正则表达式的一切,以及它的关系是整个正则表达式的情况下。

任何帮助将不胜感激。

+0

我真的很想知道你从哪里得到这个信息。也许它看起来像是无用和错误的。 – Leif 2012-03-14 15:10:33

回答

8

那部分在所述串的最开始一个子模式,其可以是相匹配:

  • 要么没有(?:|之间的部分为空),或

  • 开口卷曲大括号{后跟一个结尾大括号},后跟字母I后跟一个空格字符。

?:意味着它不捕获,所以第一捕获子模式是(.+),不(?:|{}I)

通常,{}字符正则表达式中用于定量特定图案(例如\d{0,5}指0至5位),但在这种情况下,它们没有特殊的意义,因为它们之间没有数字或逗号。

关于整个正则表达式,我猜测它应该匹配一个字符串,该字符串要么以“am on ...”开头,要么“{我现在在... ...”上,尽管我有不知道为什么需要大括号,或者为什么$最后以\转义。

+0

另外,我建议您前往http://www.regular-expressions.info/refadv.html,因为大部分内容都在这里解释。 – 2012-03-14 14:55:12

+0

另外请注意,在正则表达式的末尾$并不意味着主题/行的末尾,因为它是逃脱'\'' – SERPRO 2012-03-14 14:57:16

+0

@SERPRO:是的,我想不出为什么它会被转义的原因。我希望这只是原始源代码中的一个错误。 – BoltClock 2012-03-14 15:00:09