Expressions régulières

Utilisez des méthodes de la classe String, telles que indexOf() , substr() ou substring() , plutôt que des expressions régulières pour définir des opérations de recherche et d’extraction de chaînes de base.

Il est possible d’exécuter certaines opérations à l’aide d’une expression régulière ou des méthodes de la classe String. Pour déterminer si une chaîne en contient une autre, par exemple, vous pouvez utiliser la méthode String.indexOf() ou une expression régulière. Cependant, lorsqu’une méthode de la classe String est disponible, elle s’exécute plus rapidement que l’expression régulière équivalente et n’exige pas la création d’un autre objet.

Utilisez un groupe autre que capture (“ (?:xxxx) ”) plutôt qu’un groupe (“ (xxxx) ”) dans une expression régulière pour regrouper les éléments sans isoler le contenu du groupe dans le résultat.

Dans les expressions régulières modérément complexes, vous regroupez souvent des parties de l’expression. Dans le modèle d’expression régulière suivant, par exemple, les parenthèses créent un groupe autour du texte « ab ». Le quantificateur « + » s’applique donc au groupe et non à un seul caractère :

/(ab)+/

Le contenu de chaque groupe est « capturé », par défaut. Les données résultant de l’exécution de l’expression régulière peuvent contenir le contenu de chaque groupe du modèle. La capture de ces résultats de groupe prend plus longtemps et exige plus de mémoire, car des objets destinés à les contenir sont créés. Une autre syntaxe consiste à insérer les signes point d’interrogation et deux-points après la parenthèse ouvrante pour utiliser des groupes autres que capture. Cette syntaxe spécifie que les caractères se comportent comme un groupe mais ne sont pas capturés dans le résultat :

/(?:ab)+/

La syntaxe de groupes autres que capture est plus rapide et nécessite moins de mémoire que la syntaxe de groupes standard.

Si une expression régulière ralentit l’exécution du code, envisagez de lui en substituer une autre.

Il est parfois possible d’utiliser plusieurs modèles d’expression régulière pour tester ou identifier un même modèle de texte. Pour diverses raisons, certains modèles s’exécutent plus rapidement que d’autres. Si vous constatez qu’une expression régulière ralentit l’exécution du code plus qu’il n’est nécessaire, définissez d’autres modèles d’expression régulière permettant d’arriver au même résultat. Testez-les pour identifier le plus rapide.