我正在写一个正则表达式,当我在线检查以下正则表达式时,它可以正常工作。但是,它在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);
答案 0 :(得分:2)
如果你通过字符组(括号)更改外部Character类([]
),它将编译,但我不确定你想要匹配的是哪种字符串:
/^(([a-z]+\[[a-z| |,]+\])\,?)+$/
就像这个example
一样我认为这是因为你不能放置嵌套的Character类,因为它们会失去意义所以你的正则表达式以3个部分结束:
[([a-z]+
\[[a-z| |,]+
\])\,?]+
以不匹配的输入括号结尾