coldfusionTravailler avec RegExp Remplacer les rappels


Introduction

Si vous voulez plus qu'un simple remplacement de chaîne par des expressions régulières courantes, vous rencontrerez certainement des problèmes et vous heurterez au mur lorsque vous découvrirez les limites des fonctions regex utilisées par Coldfusion. Il n'y a pas de fonction intégrée telle que preg_replace_callback de php.

Paramètres

Paramètre Détails
re L'expression régulière
str La chaîne à appliquer à la regex
callback La fonction où le groupe capturé sera transmis si une correspondance a été trouvée. Là les allumettes peuvent être traitées

Remarques

Parce que Coldfusion lui-même ne propose pas ce que nous voulons, nous faisons appel à la variété de Java, qui est, comme nous le savons tous, au sommet de Coldfusion. Java nous propose java.util.regex.Pattern .

Alors voici ce que nous faisons réellement:

  1. Invoquez la méthode Compile partir de l'objet Classes de Pattern et transmettez-lui le modèle de regex (qui dépose probablement le modèle regex pour une utilisation ultérieure).
  2. Appelez la méthode Matcher sur ce que la méthode Compile renvoyé et passez la chaîne où le modèle doit être exécuté.
  3. Testez si la correspondance a été réussie en appelant la méthode find sur la méthode de retour de la méthode Matcher .

Si matcher.find() retourne true , on pourrait dire "Ca y est", mais il y a une petite chose à considérer: l'objet Pattern de Java stocke les groupes et nous donne accès via une autre fonction, ce qui n'est pas toujours le meilleur pour traitement ultérieur et pas si cohérent en ce qui concerne la façon dont les autres langages de programmation traitent ce cas. Par conséquent, nous effectuons une boucle sur matcher.group() afin de pouvoir passer un tableau contenant les groupes capturés à la fonction de rappel. Et maintenant nous pouvons dire: "Ça y est!"

Travailler avec RegExp Remplacer les rappels Exemples Liés