düzenli ifadeler: OR (|) alt şablonda çalışmıyor

3 Cevap php

Ben maç için iki durum var: Ya

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

veya

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

Şimdi,

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

çalışmıyor, diyor

Unknown modifier '(' ...

PHP 5.3) (preg_match_all kullanıyorum

Yukarıdaki bu tam ifadeler DEĞİLDİR, sadece özler!

3 Cevap

Düzenli ifade hataları olmadan çalışır:

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

Biz sorunu identigy böylece PHP kodu yazmak için lütfen

Sen / ayırıcı olarak, örneğin, bir regular expression in PCRE format almak için sınırlandırıcıları düz normal ifadeler koymak gerekir:

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

Eğer sınırlayıcı koyduk?

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

yerine

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