编译失败:偏移处的不匹配括号

时间:2013-05-21 03:43:24

标签: php regex

我正在写一个正则表达式,当我在线检查以下正则表达式时,它可以正常工作。但是,它在php中返回错误。那是为什么?

preg_match_all('/^[([a-z]+\[[a-z| |,]+\])\,?]+$/', $methods, $result);

返回

Severity: Warning

Message: preg_match_all() [function.preg-match-all]: Compilation failed: unmatched parentheses at offset 23

我也试过这个:

preg_match_all('/^[([a-z]+\\[[a-z| |,]+\\])\\,?]+$/', $methods, $result);

1 个答案:

答案 0 :(得分:2)

如果你通过字符组(括号)更改外部Character类([]),它将编译,但我不确定你想要匹配的是哪种字符串:

/^(([a-z]+\[[a-z| |,]+\])\,?)+$/

就像这个example

一样

我认为这是因为你不能放置嵌套的Character类,因为它们会失去意义所以你的正则表达式以3个部分结束:

[([a-z]+

\[[a-z| |,]+

\])\,?]+

以不匹配的输入括号结尾