正则表达式:子模式中的OR(|)不起作用

时间:2009-11-03 16:53:29

标签: php regex

我有两个案例要匹配:

# ... ([0-9]+,[0-9]+) € ... #

# ... (--) ... #

现在,

# ... (?:(--)|([0-9]+,[0-9]+) €) ... #

不起作用,它说

Unknown modifier '(' ...

我在PHP 5.3上使用preg_match_all()

以上不是完整的表达,只是摘录!

3 个答案:

答案 0 :(得分:0)

您需要将简单正则表达式放在分隔符中以获取regular expression in PCRE format,例如使用/作为分隔符:

/(?:(--)|([0-9]+,[0-9]+) €)/

答案 1 :(得分:0)

你有分隔符吗?

preg_match_all('#(?:(--)|([0-9]+,[0-9]+) €)#', ...) 

而不是

preg_match_all('(?:(--)|([0-9]+,[0-9]+) €)', ...) 

答案 2 :(得分:0)

您的正则表达式可以正常运行:

 $p = "/(?:(--)|([0-9]+,[0-9]+) €)/";
 echo preg_match($p, "--")."\n";                // outputs 1
 echo preg_match($p, "nomatch")."\n";           // outputs 0

请发布您的PHP代码,以便我们识别问题