I'm trying to extract only certain elements of a string using regular expressions and I want to end up with only the captured groups.
For example, I'd like to run something like (is|a)
on a string like "This is a test"
and be able to return only "is is a"
. The only way I can partially do it now is if I find the entire beginning and end of the string but don't capture it:
.*?(is|a).*? replaced with $1
However, when I do this, only the characters preceding the final found/captured group are eliminated--everything after the last found group remains.
is is a test.
How can I isolate and replace only the captured strings (so that I end up with "is is a"
), in both PHP and Perl?
Thanks!
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?