Maison > Article > développement back-end > Explication détaillée du rôle des modificateurs de modèle dans les expressions régulières
Explication détaillée du rôle des modificateurs de motifs dans les expressions régulières (i, g, m, s, x, e)
Que sont les modificateurs de motif ?
1. Les modificateurs de motif ne sont que quelques lettres. Nous pouvons en utiliser une à la fois ou plusieurs consécutivement dans chaque expression régulière. certaine signification.
2. Le modificateur de motif est utilisé pour ajuster l'intégralité de l'expression régulière. Il peut également être considéré comme une extension de la fonction d'expression régulière.
Vous vous souvenez de la formule des expressions régulières ? "/Atoms and Metacharacters/Pattern Modifier", où la barre oblique est le caractère de limite.
La composition des modificateurs de motif
Les modificateurs de motif sont des lettres, mais celles-ci ont des significations particulières dans l'application des modificateurs de motif. Permettez-moi de jeter un œil aux modificateurs de modèle disponibles, veuillez consulter le tableau suivant :
Puisque je veux dire que la correspondance n'est pas sensible à la casse, dans l'exemple suivant, nous ne le démontrons plus, regardons des exemples d'autres modificateurs de motifs.
1, modificateur de mode m.
Le code est le suivant :
<?php $pattern = '/^abc/m'; $string = 'bcd abc cba'; if (preg_match($pattern, $string, $arr)) { echo "正则表达式<b>{$pattern}</b>和字符串<b>{$string}</b>匹配成功<br>"; print_r($arr); } else { echo "<font color='red'>正则表达式{$pattern}和字符串{$string}匹配失败</font>"; } ?>
Le résultat correspondant est réussi. Remarque : lorsque nous utilisons le modificateur de motif m, nous traitons la chaîne correspondante comme plusieurs lignes au lieu de la ligne unique par défaut, donc tant qu'une ligne commence par abc, la correspondance réussira. Cependant, s'il y a des espaces devant les lignes correspondantes, elles ne seront pas mises en correspondance, à moins que le mode de correspondance de l'expression régulière ne soit modifié !
2, modificateurs de mode s.
Le code est le suivant :
<?php $pattern = '/a.*c/s'; $string = 'adsadsa c'; if (preg_match($pattern, $string, $arr)) { echo "正则表达式<b>{$pattern}</b>和字符串<b>{$string}</b>匹配成功<br>"; print_r($arr); } else { echo "<font color='red'>正则表达式{$pattern}和字符串{$string}匹配失败</font>"; } ?>
Le démérite pour ce match a également été réussi. Si vous supprimez les modificateurs de motif dans l'exemple ci-dessus, la correspondance échouera. Étant donné que le modificateur de motif s traite la chaîne correspondante comme une seule ligne, le "." dans le métacaractère peut représenter un symbole de nouvelle ligne.
3, modificateur de mode x.
Le code est le suivant :
<?php $pattern = '/a c/x'; $string = 'a c'; if (preg_match($pattern, $string, $arr)) { echo "正则表达式<b>{$pattern}</b>和字符串<b>{$string}</b>匹配成功<br>"; print_r($arr); } else { echo "<font color='red'>正则表达式{$pattern}和字符串{$string}匹配失败</font>"; } ?>
Le résultat correspondant cette fois est échoué. Parce que nous avons utilisé le modificateur de motif x pour annuler les espaces dans le motif. Remarque : Nous ne pouvons pas utiliser le modificateur de motif pour annuler l'espace représenté par s.
4, modificateur de mode A.
Le code est le suivant :
<?php $pattern = '/ac/A'; $string = 'acahgyghvbm'; if (preg_match($pattern, $string, $arr)) { echo "正则表达式<b>{$pattern}</b>和字符串<b>{$string}</b>匹配成功<br>"; print_r($arr); } else { echo "<font color='red'>正则表达式{$pattern}和字符串{$string}匹配失败</font>"; } ?>
La signification de l'expression régulière est de faire correspondre la chaîne commençant par ac, et le résultat est réussi.
Le modificateur de motif Z représente une correspondance qui se termine par une chaîne. L'utilisation est la même que A. Nous ne le démontrerons plus.
5, modificateur de mode U.
Ce modificateur de motif est très important ! Dans les expressions régulières, il est lui-même "gourmand". Alors, qu'est-ce que le mode gourmand ? Le mode gourmand signifie que par défaut, l'expression régulière continuera à essayer les correspondances suivantes après avoir trouvé la première correspondance, elle correspondra à la plus grande plage de chaînes. Mais parfois, ce n’est pas le résultat souhaité, nous devons donc annuler le mode gourmand.
Regardons d'abord un exemple de mode gourmand :
Le code est le suivant :
<?php $pattern = '/<b>.*<\/b>/'; $string = '<b>welcome</b> <b>to</b> <b>phpfuns</b>'; if (preg_match($pattern, $string, $arr)) { echo "正则表达式<b>{$pattern}</b>和字符串<b>{$string}</b>匹配成功<br>"; print_r($arr); } else { echo "<font color='red'>正则表达式{$pattern}和字符串{$string}匹配失败</font>"; } ?>
L'intention initiale de cet exemple est de correspondre à bienvenue, mais le résultat est pour faire correspondre le caractère entier de la chaîne de bienvenue à phpfuns (notez que notre chaîne 'bienvenue à phpfuns', son début et sa fin constituent exactement le modèle de correspondance de l'expression régulière, donc la correspondance est réussie), c'est le mode gourmand de la chaîne régulière expression. Bien entendu, ce n’est pas le résultat que nous souhaitons.
Annuler le mode gourmand
Nous pouvons utiliser le modificateur de motif U et le métacaractère ? pour annuler le mode gourmand de l'expression régulière de deux manières.
Le modificateur de mode U annule le mode gourmand
Le code est le suivant :
<?php $pattern = '/<b>.*<\/b>/U'; $string = '<b>welcome</b> <b>to</b> <b>phpfuns</b>'; if (preg_match($pattern, $string, $arr)) { echo "正则表达式<b>{$pattern}</b>和字符串<b>{$string}</b>匹配成功<br>"; print_r($arr); } else { echo "<font color='red'>正则表达式{$pattern}和字符串{$string}匹配失败</font>"; } ?>
Métacaractère ? Annuler le mode gourmand
Le code est le suivant :
<?php $pattern = '/<b>.*?<\/b>/'; $string = '<b>welcome</b> <b>to</b> <b>phpfuns</b>dsadsadas'; if (preg_match($pattern, $string, $arr)) { echo "正则表达式<b>{$pattern}</b>和字符串<b>{$string}</b>匹配成功<br>"; print_r($arr); } else { echo "<font color='red'>正则表达式{$pattern}和字符串{$string}匹配失败</font>"; } ?>
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!