2012-02-29 51 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

相关问题