Maison  >  Questions et réponses  >  le corps du texte

Expressions régulières Javascript : Comment conserver uniquement les groupes correspondants pour une expression régulière arbitraire ?

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 !

P粉574695215P粉574695215276 Il y a quelques jours369

répondre à tous(1)je répondrai

  • P粉071626364

    P粉0716263642024-01-17 15:46:08

    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.

    répondre
    0
  • Annulerrépondre