Existe-t-il un moyen dans l'API regex JS de réécrire l'entrée afin que seuls les groupes correspondants soient conservés (dans l'ordre), mais cela fonctionne avec des expressions régulières arbitraires (y compris des expressions régulières sans capturer de groupes) ?
Par exemple pour l'expression régulière /abc([D-F]+)gh([I-K]+)/
和输入 abcFEEDghKIKI
,我想要输出 "FEEDKIKI"
, puisque ce sont les parties capturées.
Cependant, l'expression régulière d'entrée peut également être /([a-zA-Z]+)/
qui renverra simplement le texte original pour la même entrée.
Si l'expression régulière est /([0-9]+)/
alors la chaîne vide sera renvoyée.
L'expression régulière sera générée par l'outil, mais il existe de nombreuses expressions régulières et je ne veux pas de code de cas particulier pour différents nombres de groupes de capture.
Idéalement, je pourrais également accéder d'une manière ou d'une autre à la durée du match dans l'entrée.
Je suppose qu'il existe un moyen de le faire via un rappel transmis à replace()
(ou similaire), mais il n'est pas clair comment/s'il est possible d'obtenir l'index du groupe de capture (ou si c'est nécessaire en JS).
Essentiellement, j'essaie de reproduire ce que vous pouvez faire via l'API MatchResult
en Java, où les groupes peuvent être itérés et l'index de début/fin du groupe de capture peut être trouvé. < /p>
Merci d'avance !
Découvrez : Comment accéder aux expressions régulières JavaScript ? Il semble que (au moins au début) l'utilisation de
exec()
fera ce que je veux.