正则表达式匹配冒号而不是反斜杠冒号

时间:2014-09-19 18:22:11

标签: php regex pcre

我正在为PHP搜索PCRE以匹配冒号而不是反斜杠冒号(\:)。 我尝试了这个,但它不起作用,因为我知道现在^\\将匹配除反斜杠之外的任何字符。

/[^\\\]:/

我只需要冒号而没有逃脱的冒号。

2 个答案:

答案 0 :(得分:1)

如果您不想匹配前一个字符,请使用负面的lookbehind:

/(?<!\\):/

请注意,在将上述表达式用作PHP字符串时,您必须进行一些额外的转义,因为您必须转义PHP和PCRE的反斜杠:

'/(?<!\\\\):/'

这样做的好处是它会匹配字符串开头的冒号,并且不会捕获任何额外的字符。

Refiddle

答案 1 :(得分:0)

只需删除第三个反斜杠:

/[^\\]:/

使用此字符串进行测试:

This : is : a \: test

结果是前两个冒号。

http://refiddle.com/1glg