Ben normal ifadeler kullanarak bir dize yalnızca bazı unsurları ayıklamak çalışıyorum ve ben sadece yakalanan grupları ile bitirmek istiyorum.
Örneğin, "This is a test"
gibi bir dize (is|a)
gibi bir şey çalıştırmak ister ve sadece "is is a"
dönmek mümkün olurdu. Ben bütün başlangıç ve dizenin sonunu bulmak ama bunu yakalamak yoksa ben kısmen şimdi bunu yapabilirsiniz tek yoludur:
.*?(is|a).*? replaced with $1
Ben bunu, ancak, nihai bulunan / yakalanan grup önceki yalnızca karakterleri elimine edilir - son bulunan grubundan sonra her şey kalır.
is is a test.
Nasıl izole ve sadece yakalanan dizeleri değiştirebilirsiniz (ben sonuna kadar böylece "is is a"
), PHP ve Perl hem de?
Teşekkürler!
Edit:
I see now that it's better to use m//
rather than s///
, but how can I apply that to PHP's preg_match
? In my real regex I have several captured group, resulting in $1
, $2
, $3
etc -- preg_match
only deals with one captured group, right?