J'essaye d'extraire seulement certains éléments d'une chaîne en utilisant des expressions régulières et je veux finir avec seulement les groupes capturés.Comment puis-je remplacer uniquement les éléments capturés d'une regex?
Par exemple, je voudrais exécuter quelque chose comme (is|a)
sur une chaîne comme "This is a test"
et être en mesure de retourner seulement "is is a"
. La seule façon que je peux faire partie, il est maintenant si je trouve tout le début et la fin de la chaîne, mais ne capture pas:
.*?(is|a).*? replaced with $1
Cependant, quand je fais cela, seuls les caractères précédant la finale trouvé/le groupe capturé est éliminé - tout reste après le dernier groupe trouvé.
is is a test.
Comment puis-je isoler et de ne remplacer que les chaînes capturées (de sorte que je me retrouve avec "is is a"
), à la fois PHP et Perl?
Merci!
Edit: Je vois maintenant qu'il est préférable d'utiliser m//
plutôt que s///
, mais comment puis-je l'appliquer à PHP de preg_match
? Dans mon vrai regex j'ai plusieurs groupes capturés, résultant en $1
, $2
, $3
etc - preg_match
traite seulement un groupe capturé, non?
Cela a fonctionné! preg_match_all était la clé. Merci! – Andrew