Regex und "oder"

Bistduda

Grünschnabel
Hallo,

irgendwie hab ich Probleme bei preg_replace das oder (also |) zu benutzen

Also ich habe den

Text1 "Ein Mensch sieht rot"
Text1 "Ein Hund sieht rot"

PHP:
preg_replace("!(Ein Mensch sieht)(.*)!","$1 gelb",$text1); --> "Ein Mensch sieht gelb";
preg_replace("!(Ein Mensch sieht)(.*)!","$1 gelb",$text1); --> "Ein Tier sieht rot"; (klappt nit)

jetz dachte ich

PHP:
preg_replace("!(Ein (Tier|Mensch) sieht)(.*)!","$1 gelb",$text1); --> "Ein Mensch sieht gelb"; 
preg_replace("!(Ein (Tier|Mensch) sieht)(.*)!","$1 gelb",$text2); --> "Ein Tier sieht gelb";

Aber das klappt dann leider auch garnicht?!
 
oh ich merk grad, jede geöffnete klammer,egal ob eingeschachtelt oder nicht macht ne neue gruppe aus,muss also entsprechend den aufruf ($2...) erhöhen.

Interessant :) vielleichts hilft ja auch jemand anderem
 
Zurück