Maison  >  Article  >  interface Web  >  Explication détaillée du regroupement d'expressions régulières (avec code)

Explication détaillée du regroupement d'expressions régulières (avec code)

php中世界最好的语言
php中世界最好的语言original
2018-03-30 11:39:342013parcourir

Cette fois je vous apporte une explication détaillée du regroupement des expressions régulières (avec code), quelles sont les précautions pour le regroupement d'expressions régulières, et ce qui suit est un cas pratique, commençons jetez un oeil une fois.

Regroupement d'expressions régulières :
Si vous souhaitez faire correspondre 3 nombres, l'expression régulière peut s'écrire comme suit :

d{3}

Le code ci-dessus utilise des quantificateurs répétés pour faire correspondre des nombres à 3 chiffres.
Mais dans les applications réelles, plusieurs caractères doivent souvent être répétés. Par exemple, si je veux répéter deux caractères ab, il n'est pas approprié d'utiliser le code suivant :

ab{3}

L'expression régulière ci-dessus ne peut être répétée que 3 fois b.
Afin de répéter plusieurs caractères, vous pouvez utiliser des parenthèses pour spécifier des sous-expressions ou des groupes pour réaliser cette fonction, par exemple :

(ab){3}

L'expression régulière ci-dessus peut répéter ab .
Le soi-disant regroupement consiste à utiliser des parenthèses pour inclure certains éléments afin d'en faire des domaines logiques indépendants. Ensuite, le contenu des parenthèses peut être traité comme une unité indépendante.

Regardez un exemple de code ci-dessous :

(d{1,3}.){3}d{1,3}

Ce qui précède est une simple expression régulière correspondant à une adresse IP. Le contenu entre parenthèses sera exploité comme un champ logique indépendant.
Le rôle du regroupement :
Dans les expressions régulières, le regroupement joue un rôle décisif. Voici une brève introduction à sa fonction.

1. Joue le rôle de regroupement d'origine :

Regroupez des éléments individuels pour synthétiser des sous-expressions, afin qu'ils puissent être traités comme un seul caractère, appliquez |, +, * ou ? et d'autres métacaractères pour les faire fonctionner. L'exemple de code est le suivant :

var str="I love javascript and java";
console.log(str.match(/java(script)?/gi));
Comme le montrent les résultats d'exécution du code ci-dessus, les expressions régulières peuvent correspondre à la fois aux

chaînesjavascript et java. parce que le regroupement est utilisé dans les expressions régulières et que des quantificateurs répétés sont utilisés ? , peut faire répéter la sous-expression précédente 0 ou 1 fois.

2. Définir des sous-motifs :

Un autre rôle très important du regroupement est de définir des sous-motifs dans le motif complet.

Lorsqu'une expression régulière correspond avec succès à la chaîne cible, la partie qui correspond à l'expression d'indice entre parenthèses peut être extraite de la chaîne cible.
Si nous faisons correspondre une chaîne qui commence par un chiffre et est suivie d'une ou plusieurs lettres insensibles à la casse, l'expression régulière peut être écrite comme ceci :

/d[a-zA-Z]+/

Si ce qui nous intéresse vraiment et dont nous avons besoin est le nombre au début, alors nous pouvons mettre la partie numérique de l'expression régulière entre parenthèses pour extraire le numéro de la correspondance récupérée.

/(d)[a-zA-Z]+/

3. Citation de sous-expressions : Dans la syntaxe d'une expression régulière, vous pouvez référencer la sous-expression précédente à la fin de la même expression. Ceci est accompli en suivant le numéro "". Ce numéro spécifie la position de la sous-expression entre parenthèses dans l'expression régulière. Par exemple, 1 est la première sous-expression avec des parenthèses citées, et bien sûr 2 est la deuxième sous-expression avec des parenthèses.
Remarque spéciale : étant donné que les sous-expressions peuvent être imbriquées les unes dans les autres, lors du calcul de la position de la sous-expression, il vous suffit de déterminer la position du crochet gauche. Par exemple :

/(java(script))/

Dans l'expression régulière ci-dessus, la sous-représentation imbriquée peut être représentée par 2.

La référence à une sous-expression n'est pas le modèle correspondant de la référence, mais une référence au contenu correspondant de la sous-expression. De manière générale, les références aux sous-expressions sont généralement utilisées pour implémenter une contrainte. Regardez le code suivant :

/(['"])[^'"]*1/

Généralement, les guillemets gauche et droit correspondent. alors la fin doit également être un guillemet double, si elle est précédée d'un guillemet simple, la fin doit également être un guillemet simple, et aucun autre guillemet ne peut apparaître au milieu de la chaîne, par exemple :

"Script Home vous souhaite la bienvenue"

'Bienvenue à Script House'

Ensuite, l'expression régulière ci-dessus implémente cette fonction. Lorsque la sous-expression précédente correspond à un guillemet simple, alors le 1 suivant représente également un guillemet simple. Si la sous-expression représente un guillemet double correspondant, alors le 2 suivant signifie double. citations.
Regroupement sans référence :
le regroupement occupera certaines ressources système, surtout lorsque l'expression régulière est longue, cela réduira la vitesse de correspondance. Parfois, il s'agit simplement de créer un groupe et ne nécessite pas de référence, donc l'utilisation d'un regroupement de type sans référence sera un bon choix.

/(java(?:script))/

Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le site Web chinois de php !

Lecture recommandée :

Comment utiliser des expressions régulières en JS pour remplacer plusieurs espaces dans une chaîne par un seul espace

Explication détaillée de l'efficacité gourmande, non gourmande et backtracking à l'aide d'expressions régulières en PHP (avec code)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn