Maison  >  Article  >  développement back-end  >  Que sont les modificateurs de modèle d'expression régulière PHP ?

Que sont les modificateurs de modèle d'expression régulière PHP ?

零下一度
零下一度original
2017-07-25 11:45:141369parcourir

Les modificateurs de motif PHP, également appelés modificateurs de motif, sont utilisés en plus des délimiteurs d'expressions régulières. Il est principalement utilisé pour ajuster l'interprétation des expressions régulières, étendre certaines fonctions des expressions régulières dans les opérations de correspondance, de remplacement et autres, et améliorer les capacités des expressions régulières. Cependant, les explications à de nombreux endroits sont fausses et peuvent facilement induire les autres en erreur, c'est pourquoi j'ai compilé aujourd'hui ce document pour votre référence.

模式修正符号 功能描述
i 在和正则匹配是不区分大小写
m 将字符串视为多行。默认的正则开始“^”和结束“$”将目标字条串作为一单一的一“行”字符(甚至其中包括换行符也是如此)。如果在修饰符中加上“m”,那么开始和结束将会指点字符串的每一行的开头就是“^”结束就是“$”。
s 如果设定了这个修正符,那么,被匹配的字符串将视为一行来看,包括换行符,换行符将被视为普通字符串。
x 忽略空白,除非进行转义的不被忽略。
e 只用在preg_replace()函数中,在替换字符串中逆向引用做正常的替换,将其(即“替换字符串”)作为PHP代码求值,并用其结果来替换所搜索的字符串。
A 如果使用这个修饰符,那么表达式必须是匹配的字符串中的开头部分。比如说”/a/A”匹配”abcd”。
D 模式中的$字符权匹配目标字符的结尾。没有此选项时,如果最后一个字符是换行符的话,美元符号也会匹配此字符之前。如果设定了修正符m则忽略此项。
E 与”m”相反,如果使用这个修饰符,那么”$”将匹配绝对字符串的结尾,而不是换行符前面,默认就打开了这个模式。
U 贪婪模式,和问号的作用差不多,最大限度的匹配就是贪婪模式。


Autres informations :

Modificateurs de modèle : expliquez les modificateurs utilisés dans les modèles d'expression régulière

Remarque : La liste suivante répertorie les modificateurs PCRE actuels qui peuvent être utilisé dans . Entre parenthèses se trouvent les noms PCRE internes de ces modificateurs. Les espaces et les nouvelles lignes dans les modificateurs sont ignorés, les autres caractères provoqueront des erreurs.

i (PCRE_CASELESS)

Si ce modificateur est défini, les caractères du motif correspondront aux lettres majuscules et minuscules.

m (PCRE_MULTILINE)

Par défaut, PCRE traite la chaîne cible comme une seule "ligne" de caractères (même si elle contient des nouvelles lignes) de cette manière). Le métacaractère "début de ligne" (^) correspond uniquement au début de la chaîne, et le métacaractère "fin de ligne" ($) correspond uniquement à la fin de la chaîne, ou au dernier caractère qui la précède s'il s'agit d'une nouvelle ligne (sauf si D est un modificateur de jeu). C'est la même chose que Perl. Lorsque ce modificateur est défini, "début de ligne" et "fin de ligne" correspondent en plus du début et de la fin de la chaîne entière, ils correspondent également respectivement après et avant le caractère de nouvelle ligne qu'elle contient. C'est l'équivalent du modificateur /m de Perl. S'il n'y a pas de caractères "n" dans la chaîne cible ou ^ ou $ dans le modèle, la définition de ce modificateur n'a aucun effet.

s (PCRE_DOTALL)

Si ce modificateur est défini, le métacaractère point (.) dans le motif correspond à tous les caractères, y compris les nouvelles lignes. Sans ce paramètre, les caractères de nouvelle ligne ne sont pas inclus. C'est l'équivalent du modificateur /s de Perl. Les classes de caractères exclues telles que [^a] correspondent toujours aux nouvelles lignes, que ce modificateur soit défini ou non.

x (PCRE_EXTENDED)

Si ce modificateur est défini, les caractères d'espacement dans le motif sont complètement ignorés à moins qu'ils ne soient échappés ou dans une classe de caractères, tous les caractères entre # en dehors de la classe de caractères non échappée et le caractère de nouvelle ligne suivant, inclus, sont également ignorés. C'est l'équivalent du modificateur /x de Perl, permettant d'ajouter des commentaires à des modèles complexes. Notez cependant que cela ne s'applique qu'aux caractères de données. Les caractères d'espacement ne peuvent jamais apparaître dans les séquences de caractères spéciaux d'un modèle, comme la séquence qui introduit un sous-modèle conditionnel (?( au milieu.

e

si défini Avec ce modificateur, preg_replace() effectue un remplacement normal de la référence arrière dans la chaîne de remplacement, l'évalue comme du code PHP et remplace la chaîne recherchée par son résultat. Seul preg_replace() utilise ce modificateur, les autres PCRE l'ignoreront. . Remarque : ce modificateur n'est pas disponible dans PHP3 "ancré", c'est-à-dire qu'il force la correspondance à démarrer uniquement au début de la chaîne cible. Cet effet peut également être obtenu par le modèle approprié lui-même (la seule façon de le faire en Perl).

D (PCRE_DOLLAR_ENDONLY).

Si ce modificateur est défini, le métacaractère dollar dans le motif ne correspondra qu'à la fin de la chaîne cible. le signe dollar correspondra également si le dernier caractère est un caractère de nouvelle ligne avant ce caractère (mais pas avant tout autre caractère de nouvelle ligne). Cette option est ignorée si le modificateur m est défini. Il n'y a pas de modificateur équivalent en Perl. 🎜>Lorsqu'un motif sera utilisé plusieurs fois, il vaut la peine de l'analyser d'abord afin d'accélérer la correspondance. Si ce modificateur est défini, une analyse supplémentaire sera effectuée. Actuellement, un motif n'est analysé que s'il n'y en a pas un seul. . Utile pour les modèles non ancrés avec des caractères de départ fixes

U (PCRE_UNGREEDY)

Ce modificateur inverse la valeur du nombre de correspondances afin qu'il ne soit pas répété par défaut. . Il est répété lorsqu'il est suivi de "?". Ceci n'est pas compatible avec Perl. Vous pouvez également définir le modificateur (?U) dans le modèle ou suivre le quantificateur avec un point d'interrogation (comme .*?) pour l'activer. option.

X (PCRE_EXTRA)

Ce modificateur active une fonctionnalité supplémentaire dans PCRE qui n'est compatible avec aucun modèle de barre oblique inverse en Perl Suivi d'une lettre sans particularité. la signification provoque une erreur, préservant ainsi cette combinaison pour les extensions futures. Par défaut, comme en Perl, une barre oblique inverse suivie d'une lettre sans signification particulière est traitée comme la lettre elle-même. >

u (PCRE_UTF8)

Ce modificateur active une fonctionnalité supplémentaire dans PCRE qui n'est pas compatible avec Perl Traité comme UTF-8. Ce modificateur est disponible depuis PHP 4.1.0 sous Unix et. depuis PHP 4.2.3 sous win32. Les modèles sont vérifiés pour la validité UTF-8 depuis PHP 4.3.5.

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