Maison >développement back-end >tutoriel php >Quels sont les modificateurs dans les expressions régulières PHP ?

Quels sont les modificateurs dans les expressions régulières PHP ?

零下一度
零下一度original
2017-07-25 11:39:191853parcourir

Avant d'apprendre les modificateurs d'expressions régulières PHP, comprenons d'abord le mode gourmand. Comme mentionné précédemment dans le métacaractère, "?"

Mode gourmand d'expression régulière PHP  :

Par exemple, nous voulons faire correspondre une chaîne commençant par la lettre "a" et se terminant par la lettre "b ", mais nous devons faire correspondre La chaîne contient de nombreux "b" après "a", comme "a bbbbbbbbbbbbbbbbb". L'expression régulière correspondra-t-elle au premier "b" ou au dernier "b" ? Si vous utilisez le mode gourmand, le dernier "b" sera mis en correspondance, sinon seul le premier "b" sera mis en correspondance.

Exemples d'utilisation du mode gourmand d'expressions régulières PHP :

/a.+?b/
/a.+b/U

La comparaison des exemples sans mode gourmand est la suivante :

/a.+b/

Un modificateur U est utilisé ci-dessus Pour plus de détails, voir l'introduction aux modificateurs.

Que sont les expressions régulières PHP /i, /is, /s, /isU, etc. ?

i n'est pas sensible à la casse

s Le métacaractère point (.) dans le motif correspond à tous les caractères, y compris les nouvelles lignes

x Les caractères d'espacement dans le motif sont à l'exception des caractères d'échappement ou extérieurs les classes de caractères sont complètement ignorées, et tous les caractères entre # en dehors d'une classe de caractères sans échappement et la nouvelle ligne suivante, incluse, sont également ignorés

A (PCRE_ANCHORED) Si ce modificateur est défini, le modèle est forcé d'être " ancré", c'est-à-dire qu'il est forcé de correspondre uniquement à partir du début de la chaîne cible, c'est-à-dire que ^ est automatiquement ajouté au début du modèle.

D (PCRE_DOLLAR_ENDONLY) Si ce modificateur est défini, les métacaractères dollar dans le modèle ne correspondent qu'à la fin de la chaîne cible. Sans cette option, si le dernier caractère est un caractère de nouvelle ligne, le signe dollar correspondra également 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'existe pas de modificateur équivalent en Perl. S Lorsqu'un modèle doit être utilisé plusieurs fois, il vaut la peine de l'analyser d'abord pour accélérer la correspondance. Si ce modificateur est défini, une analyse supplémentaire sera effectuée. Actuellement, l’analyse d’un motif n’est utile que pour les motifs non ancrés qui n’ont pas un seul caractère de départ fixe.

U (PCRE_UNGREEDY) Ce modificateur inverse la valeur du nombre de correspondances afin qu'il ne soit pas répété par défaut, mais le soit lorsqu'il est suivi de "?" Ce n'est pas compatible avec Perl. Cette option peut également être activée en définissant le modificateur (?U) dans le mode.

X (PCRE_EXTRA) Ce modificateur active une fonctionnalité supplémentaire dans PCRE qui n'est pas compatible avec Perl. Toute barre oblique inverse dans le motif suivie d'une lettre sans signification particulière entraîne une erreur, préservant ainsi cette combinaison pour une expansion future. 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. Aucun autre trait n'est actuellement contrôlé par ce modificateur. C'est-à-dire : mode gourmand, correspondance maximale telle que : /a[w]+?e/U correspond à abceade dans abceadeddd au lieu de abce Si aucune correction U n'est ajoutée, elle correspond à abce u (PCRE_UTF8) Ce modificateur active une fonctionnalité PCRE Extra. c'est incompatible avec Perl. Les chaînes de modèles sont traitées comme UTF-8. Ce modificateur est disponible depuis PHP 4.1.0 sous Unix et depuis PHP 4.2.3 sous win32.

Compréhension des modificateurs d'expressions régulières PHP :

Les modificateurs des expressions régulières PHP peuvent modifier de nombreuses caractéristiques des expressions régulières, les rendant ainsi plus adaptées à vos besoins (remarque : les modificateurs sont sensibles à la casse, ce qui signifie que « e » n'est pas égal à « E »).

Types et introduction des modificateurs d'expression régulière PHP :

◆i : Si "i" est ajouté au modificateur, l'expression régulière annulera la sensibilité à la casse, c'est-à-dire que "a" est le même que "A".

◆m : Le début régulier "^" et la fin "$" par défaut concernent uniquement les chaînes normales. Si "m" est ajouté au modificateur, alors le début et la fin feront référence à chaque ligne de la chaîne. : Le début de chaque ligne est "^" et la fin est "$".

◆s : Si "s" est ajouté au modificateur, le "." par défaut signifie que tout caractère à l'exception du caractère de nouvelle ligne deviendra n'importe quel caractère, y compris le caractère de nouvelle ligne !

◆x : Si ce modificateur est ajouté, les caractères d'espacement dans l'expression seront ignorés à moins qu'ils n'aient été échappés.

◆e : Ce modificateur n'est utile qu'en remplacement, ce qui signifie qu'il est utilisé comme code PHP en remplacement.

◆A : Si ce modificateur est utilisé, l'expression doit être le début de la chaîne correspondante. Par exemple, "/a/A" correspond à "abcd".

◆E : Contrairement à "m", si ce modificateur est utilisé, alors "$" correspondra à la fin absolue de la chaîne, pas avant le caractère de nouvelle ligne. Ce mode est activé par défaut.

◆U : Il a la même fonction que le point d'interrogation, et sert à définir le "mode gourmand".

Ceci conclut l'introduction aux modificateurs d'expressions régulières PHP. J'espère qu'il vous sera utile de comprendre et de maîtriser les modificateurs d'expressions régulières PHP.

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