我正在尝试编写一个简单的正则表达式来识别不是列或转义列的字符序列。IE:
foo:bar //Does not match
但
foo\:bar //Does match
根据我对正则语言的了解,这种语言可以用正则表达式来描述
/([^:]|\\[:])*/
您可以在精彩的工具Regexper中看到该表达式的图形表示
使用 php preg_match
(基于PCRE引擎),这样的表达式与“foo\:bar”不匹配。
但是,如果用单个字符替换类:
/([^:]|\\:)*/
表达式匹配。
你对此有什么解释吗?这是 PCRE 引擎对字符类的一种限制吗?
PS:在RegExr上测试基于 AS3 Regexp 引擎的第一个表达式不提供匹配,同时更改交替顺序:
/(\\[:]|[^:])*/
它确实匹配,而相同的表达式在 PCRE 中不匹配。