Maison > développement back-end > tutoriel php > Explication détaillée des exemples d'assertions de largeur nulle d'expressions régulières

Explication détaillée des exemples d'assertions de largeur nulle d'expressions régulières

巴扎黑
Libérer: 2023-03-10 15:00:01
original
1448 Les gens l'ont consulté

Cet article présente principalement l'assertion de largeur nulle des expressions régulières. Il présente brièvement le concept, la classification, les compétences d'implémentation PHP et les précautions associées à l'assertion de largeur nulle. Les amis dans le besoin peuvent se référer à l'exemple de cet article

.

Décrit l'assertion de largeur nulle des expressions régulières. Partagez-le avec tout le monde pour référence, comme suit :

Avant-propos

J'ai déjà écrit un article sur les expressions régulières (http (:/ /www.jb51.net/article/111359.htm) Les réguliers sont présentés en détail dans cet article, mais l'introduction des assertions de largeur nulle est rarement mentionnée. Ajoutez maintenant ce contenu. Dans cet article, nous résolvons principalement les problèmes suivants :

① Qu'est-ce qu'une assertion de largeur nulle, pourquoi devrions-nous utiliser une assertion de largeur nulle
② Comment utiliser une assertion de largeur nulle

Concept

L'assertion de largeur nulle, définie dans la plupart des endroits, est utilisée pour trouver des éléments avant ou après certains contenus (mais n'incluant pas ces contenus), c'est-à-dire qu'ils sont comme b ^ $ < Un tel ancrage est utilisé pour spécifier un emplacement qui doit répondre à certaines conditions (c'est-à-dire des assertions), c'est pourquoi elles sont également appelées assertions de largeur nulle. Je crois comprendre qu'une recherche correspondante est effectuée avant ou après une chaîne avec une position limitée. Par conséquent, le processus d'exécution des assertions de largeur nulle est divisé en deux situations. S'il s'agit d'une assertion directe, cela devrait être comme ceci. La première étape consiste à juger si l'assertion est vraie (c'est-à-dire si elle remplit certaines conditions). . La deuxième étape consiste à passer à l'étape suivante si les conditions sont remplies. Rechercher des correspondances en une seule étape. S'il s'agit d'une assertion inverse, la première étape consiste à faire correspondre l'ordre des expressions régulières. La deuxième étape consiste à déterminer si l'endossement inversé est satisfait en cas d'endossement inversé.

Assertion d'anticipation positive

Qu'est-ce qu'une assertion d'anticipation positive consiste à rechercher et à faire correspondre avant la position correspondante dans la chaîne, en utilisant (?= exp) correspondant La position devant exp.

Exemple

$str="abcgwcab";
$parent=&#39;/bc(?=gw)/&#39;;
$str=preg_match($parent,$str,$match);
var_dump($match);
/**
输出结果:
int 1
array (size=1) 
  0 => string &#39;bc&#39; (length=2)
  */
Copier après la connexion

Analyse : recherchez d'abord la position gw dans la chaîne "abcgwcab", affirmez-la comme étant vraie, puis correspond à avant JC. Si l'expression régulière est écrite sous la forme $parent='/bc(?=gw)ca/';

Assertion anti-anti-anticipation

Qu'est-ce qu'une assertion anti-anti-anticipation ? Utilisez (?!exp) pour faire correspondre ce qui n'est pas suivi d'exp ? .

Exemple :

$str="abcgwcab";
$parent=&#39;/bc(?!ww)gw/&#39;;
$str=preg_match($parent,$str,$match);
var_dump($str);
var_dump($match);
/**
输出:
int 1
array (size=1)
 0 => string &#39;bcgw&#39; (length=4)
*/
Copier après la connexion

Analyse : déterminez d'abord si la chaîne contient bc, puis déterminez si elle est suivie de ww, et enfin correspond à gw. On peut voir que d’autres conditions de correspondance peuvent être ajoutées avant et après l’assertion inverse.

Assertion avant et après

Qu'est-ce qu'une assertion avant et après, c'est rechercher et faire correspondre après la position correspondante dans la chaîne, (?<= exp) correspond à la position après exp

Exemple :

$str="abcgwcab";
$parent=&#39;/(?<=gw)ca/&#39;;
$str=preg_match($parent,$str,$match);
var_dump($str);
var_dump($match);
/**
输出结果:
int 1
array (size=1)
 0 => string &#39;ca&#39; (length=2)
*/
Copier après la connexion

Analyse : La première étape consiste à déterminer si le caractère "abcgwcab" contient S'il y a gw, le résultat renvoyé est vrai, puis passez à la deuxième étape pour déterminer s'il y a ca après gw.

Affirmation anti-postérieure

Qu'est-ce qu'une assertion anti-postérieure, utilisez (?

$str="abcgwcab";
$parent=&#39;/(?<!bc)gw/&#39;;
$str=preg_match($parent,$str,$match);
var_dump($str);
var_dump($match);
/**
int 0
array (size=0)
 empty
*/
Copier après la connexion

Analyse : faites d'abord correspondre gw dans la chaîne, puis déterminez si elle est précédée de bc. On constate qu'elle est précédée de bc, donc elle renvoie false

. Question d'exercice

Exemple 1 : d+(?=abc)
Déterminer si une chaîne contient 'abc' et si elle contient un ou plusieurs chiffres devant elle

Exemple 2 : (?<=dd)w
Déterminez s'il y a deux nombres consécutifs dans la chaîne, suivis d'une lettre

Exemple 3 : d{3} (?!55)
Déterminez si la chaîne contient trois nombres consécutifs, suivis du trois nombres Pas 55

Exemple 4 : (?<!ac)wd
Déterminer si une chaîne contient une combinaison de lettres et de chiffres, et si elle n'est pas précédée de ac

Résumé

Quelle est la différence entre prédicat et post-assertion

Une assertion de préemption est une expression régulière avant une assertion de jugement et une assertion de post-prédiction ? est avant une assertion de jugement. Les expressions régulières précèdent les autres expressions régulières. La première et la dernière sont ici l'ordre des autres assertions correspondantes dans l'expression régulière.

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal