2012-02-29 85 views

回答

1

(?: ...)是一組(如(...)),它不捕獲任何東西。

因此,您的示例(?:^|:|,)只是匹配文本的開頭,冒號或逗號。

此模式匹配「abc,[」和「abc:[」等字符串,但不匹配「abc^[」。

這聽起來像你不知道是什麼意思^ - 在一個正則表達式,它表示「字符串的開始」(除非您已開啓多行模式,它的意思是「開始該行「)。

+0

我明白了。我知道^表示字符串或行的開始,但我不知道它可以與|一起使用。 – dencey 2012-02-29 10:18:18

+0

@dencey:它意味着在正則表達式的任何地方的字符串的開始,除非它在一個字符類[[]]內:) – porges 2012-02-29 10:22:39

+0

@Porges因爲如果^是字符類中的第一個字符,它意味着不是如果它不是第一個字符,則意味着正常的'^' – 2012-02-29 10:27:54

1
  • ()指捕獲組
  • ?:,如果你把這個在一個組的前面它不會被捕獲,所以捕獲組只成爲一組字符。
  • ^|:|,表示它匹配行的開頭(^)或:,|是這些令牌之間的分隔符。
1

(?:^|:|,)表示匹配^或:或,。通常這也會由於括號而捕獲這些字符,但是由於?:修飾符,它們不會被捕獲。

更新:哎呦,真夠的。 ^在此上下文中匹配字符串的開頭,而不是符號本身。

+0

錯誤,'^'表示「輸入開始」(至少在'g'模式中) – 2012-02-29 10:40:54

相關問題