2012-03-14 172 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