我有兩個問題需要搭配:要麼正則表達式: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