我有两个问题需要搭配:要么正则表达式:OR(|)的子模式不工作
# ... ([0-9]+,[0-9]+) € ... #
或
# ... (--) ... #
现在,
# ... (?:(--)|([0-9]+,[0-9]+) €) ... #
不工作它说
Unknown modifier '(' ...
我在PHP 5.3上使用preg_match_all()
上面那些不是完整的表达式,只是摘录!
我有两个问题需要搭配:要么正则表达式:OR(|)的子模式不工作
# ... ([0-9]+,[0-9]+) € ... #
或
# ... (--) ... #
现在,
# ... (?:(--)|([0-9]+,[0-9]+) €) ... #
不工作它说
Unknown modifier '(' ...
我在PHP 5.3上使用preg_match_all()
上面那些不是完整的表达式,只是摘录!
你的正则表达式工作没有错误:
$p = "/(?:(--)|([0-9]+,[0-9]+) €)/";
echo preg_match($p, "--")."\n"; // outputs 1
echo preg_match($p, "nomatch")."\n"; // outputs 0
请发表你的PHP代码,所以我们可以identigy
代码有点太复杂,因为它在循环等中构建了完整的表达式。 但我发现了错误,我正在使用|作为分隔符,我完全模糊了。 – janoliver 2009-11-03 17:06:58
你需要把普通的正则表达式的分隔符来获得一个regular expression in PCRE format,例如用/
作为分隔符:
/(?:(--)|([0-9]+,[0-9]+) €)/
你已经把分隔符?
preg_match_all('#(?:(--)|([0-9]+,[0-9]+) €)#', ...)
代替
preg_match_all('(?:(--)|([0-9]+,[0-9]+) €)', ...)
当然我使用分隔符...我只发布了正则表达式的提取... – janoliver 2009-11-03 16:57:46
你可以发布你如何”问题在PHP上下文中定义了你的模式? – 2009-11-03 17:01:38
如果这些只是提取,请提供整个正则表达式作为您发布工作没有错误... – Tomas 2009-11-03 17:06:02
我相信在正则表达式中使用管道字符被称为“交替”而不是“或”。 – 2009-11-03 17:08:27