GoGPT Best VPN GoSearch

Icône de favori OnWorks

perlrebackslash - En ligne dans le Cloud

Exécutez perlrebackslash dans le fournisseur d'hébergement gratuit OnWorks sur Ubuntu Online, Fedora Online, l'émulateur en ligne Windows ou l'émulateur en ligne MAC OS

Il s'agit de la commande perlrebackslash qui peut être exécutée dans le fournisseur d'hébergement gratuit OnWorks en utilisant l'un de nos multiples postes de travail en ligne gratuits tels que Ubuntu Online, Fedora Online, l'émulateur en ligne Windows ou l'émulateur en ligne MAC OS

PROGRAMME:

Nom


perlrebackslash - Séquences et échappements de barres obliques inverses d'expressions régulières Perl

DESCRIPTION


La documentation de haut niveau sur les expressions régulières Perl se trouve dans perlre.

Ce document décrit toutes les séquences d'antislash et d'échappement. Après avoir expliqué le rôle de
la barre oblique inverse, elle liste toutes les séquences qui ont une signification particulière en Perl régulier
expressions (par ordre alphabétique), puis décrit chacune d'elles.

La plupart des séquences sont décrites en détail dans différents documents ; le but premier de cette
document est d'avoir un guide de référence rapide décrivant toutes les séquences de barre oblique inverse et d'échappement.

Le manuel de formation barre oblique inverse
Dans une expression régulière, la barre oblique inverse peut effectuer l'une des deux tâches suivantes : elle supprime
la signification spéciale du caractère qui le suit (par exemple, "\|" correspond à une verticale
bar, ce n'est pas une alternance), ou c'est le début d'une barre oblique inverse ou d'une séquence d'échappement.

Les règles qui déterminent ce que c'est sont assez simples : si le caractère suivant le
La barre oblique inverse est un caractère de ponctuation ASCII (autre qu'un mot) (c'est-à-dire tout ce qui n'est pas un
lettre, chiffre ou trait de soulignement), alors la barre oblique inverse enlève simplement toute signification particulière de
le personnage qui le suit.

Si le caractère suivant la barre oblique inverse est une lettre ASCII ou un chiffre ASCII, alors le
la séquence peut être spéciale ; si c'est le cas, il est répertorié ci-dessous. Quelques lettres n'ont pas encore été utilisées,
donc les échapper avec une barre oblique inverse ne les rend pas spéciaux. Une future version de
Perl peut leur attribuer une signification particulière, donc si vous avez activé les avertissements, Perl émettra
un avertissement si vous utilisez une telle séquence. [1].

Il est cependant garanti que les séquences de backslash ou d'échappement n'ont jamais de ponctuation
caractère suivant la barre oblique inverse, ni maintenant, ni dans une future version de Perl 5.
est sûr de mettre une barre oblique inverse devant un caractère autre qu'un mot.

Notez que la barre oblique inverse elle-même est spéciale ; si vous voulez faire correspondre une barre oblique inverse, vous devez
échapper à la barre oblique inverse avec une barre oblique inverse : "/\\/" correspond à une seule barre oblique inverse.

[1] Il y a une exception. Si vous utilisez un caractère alphanumérique comme délimiteur de votre
pattern (ce que vous ne devriez probablement pas faire pour des raisons de lisibilité), vous devez vous échapper
le délimiteur si vous voulez le faire correspondre. Perl n'avertit pas alors. Voir aussi "Détails sanglants de
l'analyse des constructions entre guillemets" dans perlop.

Tous le séquences et s'échappe
Ceux qui ne sont pas utilisables dans une classe de caractères entre crochets (comme "[\da-z]") sont marqués comme "Pas dans
[]."

\000 Séquence d'échappement octale. Voir aussi \o{}.
\1 Référence arrière absolue. Pas dedans [].
\a Alarme ou sonnerie.
\A Début de chaîne. Pas dedans [].
\b{}, \b Limite. (\b est un retour arrière dans []).
\B{}, \B Pas une limite. Pas dedans [].
\cX Contrôle-X.
\C Un seul octet, même sous UTF-8. Pas dedans [].
(Déconseillé)
\d Classe de caractères pour les chiffres.
\D Classe de caractères pour les non-chiffres.
\e Caractère d'échappement.
\E Désactive le traitement \Q, \L et \U. Pas dedans [].
\f Saut de page.
\F Foldcase jusqu'à \E. Pas dedans [].
\g{}, \g1 Backreference nommée, absolue ou relative.
Pas dedans [].
\G Pos assertion. Pas dedans [].
\h Classe de caractères pour les espaces horizontaux.
\H Classe de caractères pour les espaces non horizontaux.
\k{}, \k<>, \k'' Backreference nommée. Pas dedans [].
\K Gardez les éléments à gauche de \K. Pas dedans [].
\l Caractère suivant en minuscule. Pas dedans [].
\L Minuscule jusqu'à \E. Pas dedans [].
\n Caractère de nouvelle ligne (logique).
\N N'importe quel caractère mais saut de ligne. Pas dedans [].
\N{} Caractère ou séquence nommé ou numéroté (Unicode).
\o{} Séquence d'échappement octale.
\p{}, \pP Caractère avec la propriété Unicode donnée.
\P{}, \PP Caractère sans la propriété Unicode donnée.
\Q Citer (désactiver) les métacaractères du modèle jusqu'à \E. Pas
dans [].
\r Renvoie le caractère.
\R Nouvelle ligne générique. Pas dedans [].
\s Classe de caractères pour les espaces.
\S Classe de caractères pour les espaces non blancs.
\t Caractère de tabulation.
\u Casse de titre prochain caractère. Pas dedans [].
\U Majuscules jusqu'à \E. Pas dedans [].
\v Classe de caractères pour les espaces verticaux.
\V Classe de caractères pour les espaces non verticaux.
\w Classe de caractères pour les caractères de mot.
\W Classe de caractères pour les caractères autres que des mots.
\x{}, \x00 Séquence d'échappement hexadécimale.
\X Unicode "cluster de graphème étendu". Pas dedans [].
\z Fin de chaîne. Pas dedans [].
\Z Fin de chaîne. Pas dedans [].

Personnage Escapes
Parfaitement fixé caractères

Une poignée de personnages ont un caractère échapper. Le tableau suivant les montre,
ainsi que leurs points de code ASCII (en décimal et hexadécimal), leur nom ASCII, le contrôle
escape sur les plateformes ASCII et une brève description. (Pour les plates-formes EBCDIC, voir "OPÉRATEUR
DIFFÉRENCES" dans perlebcdic.)

Séq. Code Point ASCII Cntrl Description.
Déc Hex
\a 7 07 BEL \cG alarme ou sonnerie
\b 8 08 BS \cH retour arrière [1]
\e 27 1B ESC \c[ caractère d'échappement
\f 12 0C FF \cL saut de page
\n 10 0A LF \cJ saut de ligne [2]
\r 13 0D CR \cM retour chariot
\t 9 09 TAB \cI onglet

[1] "\b" est le caractère de retour arrière uniquement à l'intérieur d'une classe de caractères. En dehors d'un personnage
classe, "\b" seul est une limite mot-caractère/non-mot-caractère, et "\b{}" est une
autre type de frontière.

[2] "\n" correspond à une nouvelle ligne logique. Perl convertit entre "\n" et le natif de votre système d'exploitation
caractère de nouvelle ligne lors de la lecture ou de l'écriture dans des fichiers texte.

Exemple

$str =~ /\t/; # Correspond si $str contient un onglet (horizontal).

Contrôle caractères

"\c" est utilisé pour désigner un caractère de contrôle ; le caractère suivant "\c" détermine le
valeur de la construction. Par exemple, la valeur de "\cA" est chr(1), et la valeur de "\cb"
is chr(2), etc. Les détails sanglants sont dans "Regexp Quote-Like Operators" dans perlop. UNE
liste complète de ce que chr(1), etc. signifie pour les plates-formes ASCII et EBCDIC est dans "OPERATOR
DIFFÉRENCES" dans perlebcdic.

Notez que "\c\" seul à la fin d'une expression régulière (ou d'une chaîne entre guillemets) n'est pas
valide. La barre oblique inverse doit être suivie d'un autre caractère. C'est-à-dire "\c\X" veux dire
"chr(28) . 'X'" pour tous les personnages X.

Pour écrire du code indépendant de la plate-forme, vous devez utiliser "\N{NOM}" à la place, comme "\N{ESCAPE}" ou
"\N{U+001B}", voir les noms de personnages.

Mnémonique: ccaractère de contrôle.

Exemple

$str =~ /\cK/; # Correspond si $str contient une tabulation verticale (contrôle-K).

Nommé or numéroté caractères et caractère séquences

Les caractères Unicode ont un nom Unicode et une valeur de point de code numérique (ordinale). Utilisez le
Construction "\N{}" pour spécifier un caractère par l'une de ces valeurs. Certaines séquences de
les personnages ont aussi des noms.

Pour spécifier par le nom, le nom du caractère ou de la séquence de caractères va entre le bouclé
croisillons.

Pour spécifier un caractère par point de code Unicode, utilisez la forme "\N{U+code point}", Où code
point est un nombre en hexadécimal qui donne le point de code qu'Unicode a attribué à
le caractère désiré. Il est d'usage mais pas obligatoire d'utiliser des zéros non significatifs pour remplir le
nombre à 4 chiffres. Ainsi "\N{U+0041}" signifie "LETTRE MAJUSCULE LATINE A", et vous aurez rarement
voyez-le écrit sans les deux zéros non significatifs. "\N{U+0041}" signifie "A" même sur EBCDIC
machines (où la valeur ordinale de "A" n'est pas 0x41).

Il est même possible de donner vos propres noms aux personnages et aux séquences de caractères. Pour
détails, voir charnames.

(Il existe un formulaire interne étendu que vous pouvez voir dans la sortie de débogage : "\N{U+code
point.code point...}". Le "..." signifie n'importe quel nombre de ces code points séparés par des points.
Cela représente la séquence formée par les caractères. Il s'agit d'un formulaire interne uniquement,
sujet à changement, et vous ne devriez pas essayer de l'utiliser vous-même.)

Mnémonique: Ncaractère amé.

Notez qu'un caractère ou une séquence de caractères exprimé sous forme de caractère nommé ou numéroté est
considéré comme un caractère sans signification particulière par le moteur de regex, et correspondra "comme
est".

Exemple

$str =~ /\N{CARACTÈRE THA AINSI AINSI}/; # Correspond au caractère Thaï SO SO

utilisez les noms de caractères 'cyrillique' ; # Charge les noms cyrilliques.
$str =~ /\N{ZHE}\N{KA}/; # Faites correspondre "ZHE" suivi de "KA".

Octal s'échappe

Il existe deux formes d'échappement octal. Chacun est utilisé pour spécifier un caractère par son code
point spécifié en notation octale.

Une forme, disponible à partir de Perl 5.14 ressemble à "\o{...}", où les points représentent
un ou plusieurs chiffres octaux. Il peut être utilisé pour n'importe quel caractère Unicode.

Il a été introduit pour éviter les problèmes potentiels avec l'autre forme, disponible dans tous les
Perles. Cette forme se compose d'une barre oblique inverse suivie de trois chiffres octaux. Un problème
avec ce formulaire est qu'il peut ressembler exactement à une référence arrière à l'ancienne (voir
"Règles de désambiguïsation entre les échappements octaux à l'ancienne et les références arrière" ci-dessous.) Vous pouvez
évitez cela en faisant du premier des trois chiffres toujours un zéro, mais cela fait de \077 le
plus grand point de code spécifiable.

Dans certains contextes, une barre oblique inverse suivie de deux ou même d'un chiffre octal peut être interprétée
comme échappement octal, parfois avec un avertissement, et à cause de quelques bugs, parfois avec
résultats surprenants. De plus, si vous créez une regex à partir d'extraits de code plus petits
concaténés et vous utilisez moins de trois chiffres, le début d'un extrait
peut être interprété comme l'ajout de chiffres à la fin de l'extrait avant celui-ci. Voir "Absolu
référencement" pour plus de discussion et des exemples du problème de l'extrait de code.

Notez qu'un caractère exprimé sous forme d'échappement octal est considéré comme un caractère sans
signification particulière par le moteur regex, et correspondra "en l'état".

Pour résumer, la forme "\o{}" est toujours sûre à utiliser, et l'autre forme est sûre à utiliser pour
le code pointe jusqu'à \077 lorsque vous utilisez exactement trois chiffres pour les spécifier.

Mnémonique: 0ctal ou ocatal.

Exemples (en supposant une plate-forme ASCII)

$str = "Perl" ;
$str =~ /\o{120}/; # Correspondance, "\120" est "P".
$str =~ /\120/; # Même.
$str =~ /\o{120}+/; # Correspondance, "\120" est "P",
# il est répété au moins une fois.
$str =~ /\120+/; # Même.
$str =~ /P\053/; # Aucune correspondance, "\053" est "+" et pris littéralement.
/\o{23073}/ # Premier plan noir, visage souriant sur fond blanc.
/\o{4801234567}/ # Émet un avertissement et renvoie chr (4).

Règles de désambiguïsation entre les échappements octaux à l'ancienne et les références arrière

Les échappements octaux de la forme "\000" en dehors des classes de caractères entre crochets peuvent entrer en conflit
avec des backreferences à l'ancienne (voir "Référencement absolu" ci-dessous). Ils consistent tous deux en un
barre oblique inverse suivie de chiffres. Perl doit donc utiliser des heuristiques pour déterminer s'il s'agit d'un
référence arrière ou un échappement octal. Perl utilise les règles suivantes pour lever l'ambiguïté :

1. Si la barre oblique inverse est suivie d'un seul chiffre, il s'agit d'une référence arrière.

2. Si le premier chiffre suivant la barre oblique inverse est un 0, il s'agit d'un échappement octal.

3. Si le nombre qui suit la barre oblique inverse est N (en décimal) et que Perl a déjà vu N
groupes de capture, Perl considère cela comme une référence arrière. Sinon, il considère qu'il s'agit d'un
évasion octale. Si N a plus de trois chiffres, Perl ne prend que les trois premiers pour le
échappement octal ; le reste est apparié tel quel.

mon $pat = "(" x 999;
$pat .= "a";
$pat .= ")" x 999;
/^($pat)\1000$/; # Correspond à « aa » ; il y a 1000 groupes de capture.
/^$pat\1000$/; # Correspond à 'a@0' ; il y a 999 groupes de capture
# et \1000 est vu comme \100 (un '@') et un '0'.

Vous pouvez toujours forcer une interprétation de référence arrière en utilisant le formulaire "\g{...}". Tu peux
la force une interprétation octale toujours en utilisant la forme "\o{...}", ou pour les nombres supérieurs
à \077 (= 63 décimal), en utilisant trois chiffres, en commençant par un "0".

Hexadécimal s'échappe

Comme les échappements octaux, il existe deux formes d'échappements hexadécimaux, mais les deux commencent par le
séquence "\x". Ceci est suivi par exactement deux chiffres hexadécimaux formant un
nombre ou un nombre hexadécimal de longueur arbitraire entouré d'accolades. le
le nombre hexadécimal est le point de code du caractère que vous souhaitez exprimer.

Notez qu'un caractère exprimé comme l'un de ces échappements est considéré comme un caractère sans
signification particulière par le moteur regex, et correspondra "en l'état".

Mnémonique : ilxadécimal.

Exemples (en supposant une plate-forme ASCII)

$str = "Perl" ;
$str =~ /\x50/; # Correspondance, "\x50" est "P".
$str =~ /\x50+/; # Match, "\x50" est "P", il est répété au moins une fois
$str =~ /P\x2B/; # Aucune correspondance, "\x2B" est "+" et pris littéralement.

/\x{2603}\x{2602}/ # Bonhomme de neige avec un parapluie.
# Le caractère Unicode 2603 est un bonhomme de neige,
# le caractère Unicode 2602 est un parapluie.
/\x{263B}/ # Visage noir souriant.
/\x{263b}/ # Idem, les chiffres hexadécimaux A - F sont insensibles à la casse.

Modificateurs
Un certain nombre de séquences de barres obliques inverses ont à voir avec le changement de caractère ou de caractères
en les suivant. "\l" mettra en minuscule le caractère qui le suit, tandis que "\u" sera majuscule
(ou, plus précisément, la casse du titre) le caractère qui le suit. Ils offrent des fonctionnalités
similaire aux fonctions "lcfirst" et "ucfirst".

Pour mettre en majuscule ou en minuscule plusieurs caractères, on peut utiliser "\L" ou "\U", qui
mettra en minuscules/majuscules tous les caractères qui les suivent, jusqu'à la fin du
motif ou l'occurrence suivante de "\E", selon la première éventualité. Ils offrent des fonctionnalités
similaire à ce que fournissent les fonctions "lc" et "uc".

"\Q" est utilisé pour citer (désactiver) les métacaractères de modèle, jusqu'au prochain "\E" ou à la fin de
le motif. "\Q" ajoute une barre oblique inverse à tout caractère qui pourrait avoir une signification particulière pour
Perl. Dans la plage ASCII, il cite chaque caractère qui n'est pas une lettre, un chiffre ou
souligner. Voir "quotemeta" dans perlfunc pour plus de détails sur ce qui est cité pour les non-ASCII
points de code. L'utilisation de ceci garantit que tout caractère entre "\Q" et "\E" sera mis en correspondance
littéralement, non interprété comme un métacaractère par le moteur regex.

"\F" peut être utilisé pour replier tous les caractères suivants, jusqu'au "\E" suivant ou à la fin de
le motif. Il fournit des fonctionnalités similaires à la fonction "fc".

Mnémonique: Lcas, Ucas, Fancien cas, Quotemeta, End.

Exemples

$sid = "sid" ;
$greg = "GrEg" ;
$miranda = "(Miranda)" ;
$str =~ /\u$sid/; # Correspond à 'Sid'
$str =~ /\L$greg/; # Correspond à 'greg'
$str =~ /\Q$miranda\E/; # Correspond à '(Miranda)', comme si le motif
# avait été écrit comme /\(Miranda\)/

Personnage les classes
Les expressions régulières Perl ont une large gamme de classes de caractères. Certains personnages
les classes sont écrites sous la forme d'une séquence de barres obliques inverses. Nous en discuterons brièvement ici; complet
les détails des classes de caractères peuvent être trouvés dans perlrecharclass.

"\w" est une classe de caractères qui correspond à n'importe quel mot caractère (lettres, chiffres, Unicode
les marques et la ponctuation du connecteur (comme le trait de soulignement)). "\d" est une classe de caractères qui
correspond à n'importe quel chiffre décimal, tandis que la classe de caractères "\s" correspond à n'importe quel espace
personnage. Nouveau dans perl 5.10.0 sont les classes "\h" et "\v" qui correspondent à l'horizontale et
caractères d'espacement verticaux.

L'ensemble exact de caractères correspondant à "\d", "\s" et "\w" varie en fonction de
pragma et modificateurs d'expressions régulières. Il est possible de restreindre le match au
plage ASCII en utilisant le modificateur d'expression régulière "/a". Voir perlrecharclass.

Les variantes majuscules ("\W", "\D", "\S", "\H" et "\V") sont des classes de caractères qui
correspondre, respectivement, à tout caractère qui n'est pas un caractère de mot, un chiffre, un espace,
espace blanc horizontal ou espace blanc vertical.

Mnémotechnique: wordre, dallume, srythme, hà l'horizontale, vertique.

Unicode les classes

"\pP" (où "P" est une seule lettre) et "\p{Property}" sont utilisés pour faire correspondre un caractère qui
correspond à la propriété Unicode donnée ; les propriétés incluent des choses comme « lettre » ou « thai
caractère". Mettre la séquence en majuscule en "\PP" et "\P{Propriété}" fait correspondre la séquence
un caractère qui ne correspond pas à la propriété Unicode donnée. Pour plus de détails, voir
"Séquences de barre oblique inverse" dans perlrecharclass et "Propriétés des caractères Unicode" dans
perlunicode.

Mnémonique: ppropriété.

Référencement
Si la capture de parenthèses est utilisée dans une expression régulière, nous pouvons nous référer à la partie de la
chaîne source qui a été mise en correspondance et correspond exactement à la même chose. Il existe trois manières de
se référant à de telles référence arrière: absolument, relativement et par nom.

Absolute référencement

Soit "\gN" (à partir de Perl 5.10.0), ou "\N" (à l'ancienne) où N est positif
un nombre décimal (non signé) de n'importe quelle longueur est une référence absolue à un groupe de capture.

N fait référence au Nième ensemble de parenthèses, donc "\gN" fait référence à tout ce qui a été égalé par
cet ensemble de parenthèses. Ainsi, "\g1" fait référence au premier groupe de capture dans l'expression régulière.

Le GN" forme peut être écrite de manière équivalente comme "\g{N}" qui évite l'ambiguïté lors de la construction
une regex en concaténant des chaînes plus courtes. Sinon si vous aviez une regex "qr/$a$b/", et $a
contenait "\g1", et $b contenait "37", vous obtiendriez "/\g137/" ce qui n'est probablement pas ce que
vous aviez l'intention.

Dans le "\N" forme, N ne doit pas commencer par un "0", et il doit y avoir au moins N capture
groupes, ou bien N est considéré comme un échappement octal (mais quelque chose comme "\18" est le même que
"\0018" ; c'est-à-dire l'échappement octal "\001" suivi d'un chiffre littéral "8").

Mnémonique: ggroupe.

Exemples

/(\w+) \g1/; # Trouve un mot dupliqué, (par exemple "chat chat").
/(\w+) \1/; # Même chose; écrit à l'ancienne.
/(.)(.)\g2\g1/; # Faites correspondre un palindrome de quatre lettres (par exemple "ABBA").

Relatif référencement

"\g-N" (à partir de Perl 5.10.0) est utilisé pour l'adressage relatif. (Il peut être écrit comme
"\g{-N".) Il se réfère à la Nème groupe avant le "\g{-N}".

Le gros avantage de cette forme est qu'elle facilite grandement l'écriture de motifs avec
références qui peuvent être interpolées dans des motifs plus grands, même si le motif le plus grand est également
contient des groupes de capture.

Exemples

/(A) # Groupe 1
( # Groupe 2
(B) # Groupe 3
\g{-1} # Fait référence au groupe 3 (B)
\g{-3} # Fait référence au groupe 1 (A)
)
/X; # Correspond à "ABBA".

mon $qr = qr /(.)(.)\g{-2}\g{-1}/; # Correspond à 'abab', 'cdcd', etc.
/$qr$qr/ # Correspond à 'ababcdcd'.

Nommé référencement

"\g{Nom}" (à partir de Perl 5.10.0) peut être utilisé pour faire référence à un groupe de capture nommé,
s'affranchir complètement d'avoir à penser aux positions des tampons de capture.

Pour être compatible avec les expressions régulières .Net, "\g{name}" peut également être écrit comme
"\k{nom}", "\k " ou "\k'nom'".

Pour éviter toute ambiguïté, prénom ne doit pas commencer par un chiffre ni contenir de tiret.

Exemples

/(? \w+) \g{mot}/ # Trouve le mot dupliqué, (par exemple "chat chat")
/(? \w+) \k{mot}/ # Idem.
/(? \w+) \k / # Même.
/(? .)(? .)\g{lettre1}\g{lettre2}/
# Faites correspondre un palindrome de quatre lettres (par exemple "ABBA")

Affirmations
Les assertions sont des conditions qui doivent être vraies ; ils ne correspondent pas réellement à des parties du
sous-chaîne. Il y a six assertions qui sont écrites sous forme de séquences de barres obliques inverses.

\A "\A" ne correspond qu'au début de la chaîne. Si le modificateur "/m" n'est pas utilisé,
alors "/\A/" est équivalent à "/^/". Cependant, si le modificateur "/m" est utilisé, alors "/^/"
correspond aux nouvelles lignes internes, mais la signification de "/\A/" n'est pas modifiée par le "/m"
modificateur. "\A" correspond au début de la chaîne, que le "/m"
le modificateur est utilisé.

\z, \Z
"\z" et "\Z" correspondent à la fin de la chaîne. Si le modificateur "/m" n'est pas utilisé, alors
"/\Z/" équivaut à "/$/" ; c'est-à-dire qu'il correspond à la fin de la chaîne, ou à un
avant le saut de ligne à la fin de la chaîne. Si le modificateur "/m" est utilisé, alors "/$/"
correspond aux nouvelles lignes internes, mais la signification de "/\Z/" n'est pas modifiée par le "/m"
modificateur. "\Z" correspond à la fin de la chaîne (ou juste avant une nouvelle ligne de fin)
indépendamment du fait que le modificateur "/m" soit utilisé.

"\z" est exactement comme "\Z", sauf qu'il ne correspond pas avant une nouvelle ligne de fin. "\z"
correspond à la fin de la chaîne uniquement, quels que soient les modificateurs utilisés, et pas seulement
avant une nouvelle ligne. C'est comment ancrer la correspondance à la vraie fin de la chaîne sous
toutes les conditions.

\G "\G" est généralement utilisé uniquement en combinaison avec le modificateur "/g". Si le modificateur "/g"
est utilisé et la correspondance est effectuée dans un contexte scalaire, Perl se souvient où dans la source
chaîne le dernier match terminé, et la prochaine fois, il commencera le match d'où il
terminé la fois précédente.

"\G" correspond au point où la correspondance précédente sur cette chaîne s'est terminée, ou le début
de cette chaîne s'il n'y avait pas de correspondance précédente.

Mnémonique: Gglobal.

\b{}, \b, \B{}, \B
"\b{...}", disponible à partir de la v5.22, correspond à une limite (entre deux caractères, ou
avant le premier caractère de la chaîne, ou après le dernier caractère de la chaîne)
basé sur les règles Unicode pour le type de limite spécifié à l'intérieur des accolades. le
les types de limites actuellement connus sont donnés quelques paragraphes ci-dessous. "\B{...}" correspond à
tout endroit entre des caractères où "\b{...}" du même type ne correspond pas.

"\b" lorsqu'il n'est pas immédiatement suivi d'un "{" correspond à n'importe quel endroit entre un mot
(quelque chose correspond à "\w") et un caractère non-mot ("\W"); "\B" quand pas immédiatement
suivi d'un "{" correspond à n'importe quel endroit entre les caractères où "\b" ne correspond pas.
Pour obtenir une meilleure correspondance des mots du texte en langage naturel, voir \b{wb} ci-dessous.

"\b" et "\B" supposent qu'il y a un caractère non-mot avant le début et après le
fin de la chaîne source ; donc "\b" correspondra au début (ou à la fin) de la source
chaîne si la chaîne source commence (ou se termine) par un mot. Sinon, "\B"
correspondra.

N'utilisez pas quelque chose comme "\b=head\d\b" et attendez-vous à ce qu'il corresponde au début d'un
ligne. Il ne peut pas, car pour qu'il y ait une frontière avant le non-mot "=", il
doit être un caractère de mot immédiatement précédent. Limite tout simple "\b" et "\B"
les déterminations recherchent uniquement des caractères verbaux, pas des caractères non verbaux ni des
la chaîne se termine. Il peut être utile de comprendre comment <\b> et <\B> fonctionnent en les assimilant à
suit:

\b signifie vraiment (?:(?<=\w)(?!\w)|(?
\B signifie vraiment (?:(?<=\w)(?=\w)|(?

En revanche, "\b{...}" et "\B{...}" peuvent correspondre ou non au début et à la fin de
la ligne, selon le type de frontière. Ceux-ci implémentent la valeur par défaut Unicode
limites, spécifiées danshttp://www.unicode.org/reports/tr29/>. Les types de frontières
actuellement disponibles sont :

"\b{gcb}" ou "\b{g}"
Cela correspond à une "Limite de cluster de graphème" Unicode. (En fait, Perl utilise toujours
le cluster de graphème "étendu" amélioré"). Ceux-ci sont expliqués ci-dessous sous
""\X"". En fait, "\X" est un autre moyen d'obtenir la même fonctionnalité. Il est
équivalent à "/.+?\b{gcb}/". Utilisez celui qui vous convient le mieux
situation.

"\b{qn}"
Cela correspond à une "limite de phrase" Unicode. Ceci est une aide à l'analyse de la nature
phrases de langage. Il donne de bons résultats, mais imparfaits. Par exemple, il pense
que "M. Smith" est de deux phrases. Plus de détails sont à
<http://www.unicode.org/reports/tr29/>. Notez également qu'il pense que n'importe quoi
la correspondance "\R" (sauf saut de page et tabulation verticale) est une limite de phrase.
"\b{sb}" fonctionne avec du texte conçu pour les traitements de texte qui enveloppent les lignes
automatiquement pour l'affichage, mais les limites de ligne codées en dur sont considérées comme
essentiellement les extrémités des blocs de texte (des paragraphes vraiment), et donc les extrémités de
sententces. "\b{sb}" ne fonctionne pas bien avec du texte contenant des nouvelles lignes intégrées, comme
le texte source du document que vous lisez. Un tel texte doit être
prétraité pour se débarrasser des séparateurs de ligne avant de rechercher la phrase
les frontières. Certaines personnes considèrent cela comme un bogue dans la norme Unicode, et cela
le comportement est assez sujet à changement dans les futures versions de Perl.

"\b{wb}"
Cela correspond à une "limite de mots" Unicode. Cela donne mieux (mais pas parfait)
résultats pour le traitement du langage naturel que le simple "\b" (sans accolades).
Par exemple, il comprend que les apostrophes peuvent être au milieu des mots et
que les parenthèses ne le sont pas (voir les exemples ci-dessous). Plus de détails sont à
<http://www.unicode.org/reports/tr29/>.

Il est important de réaliser lorsque vous utilisez ces limites Unicode, que vous prenez
un risque qu'une future version de Perl contenant une version ultérieure de l'Unicode
Standard ne fonctionnera pas exactement de la même manière que lorsque votre code a été écrit.
Ces règles ne sont pas considérées comme stables et ont été un peu plus sujettes à changement
que le reste de la norme. Unicode se réserve le droit de les modifier à volonté, et
Perl se réserve le droit de mettre à jour son implémentation selon les nouvelles règles d'Unicode. Dans le
passé, certains changements ont eu lieu parce que de nouveaux personnages ont été ajoutés à la norme
qui ont des caractéristiques différentes de tous les personnages précédents, donc de nouvelles règles sont
formulés pour les manipuler. Ceux-ci ne devraient causer aucune rétrocompatibilité
problèmes. Mais certains changements ont changé le traitement des personnages existants car
le comité technique Unicode a décidé que le changement est justifié pour quelque
raison. Cela peut être pour corriger un bogue, ou parce qu'ils pensent que de meilleurs résultats sont obtenus
avec la nouvelle règle.

Il est également important de comprendre qu'il s'agit de définitions de limites par défaut et que
les implémentations peuvent souhaiter adapter les résultats à des fins et des lieux particuliers.

Unicode définit un quatrième type de limite, accessible via Unicode::LineBreak
module.

Mnémonique: blimite.

Exemples

"chat" =~ /\Acat/; # Correspondre.
"chat" =~ /chat\Z/; # Correspondre.
"cat\n" =~ /cat\Z/; # Correspondre.
"cat\n" =~ /cat\z/; # Pas de correspondance.

"chat" =~ /\bcat\b/; # Allumettes.
"chats" =~ /\bcat\b/; # Pas de correspondance.
"chat" =~ /\bcat\B/; # Pas de correspondance.
"chats" =~ /\bcat\B/; # Correspondre.

while ("chat chien" =~ /(\w+)/g) {
imprimer $1 ; # Imprime 'catdog'
}
while ("chat chien" =~ /\G(\w+)/g) {
imprimer $1 ; # Imprime 'chat'
}

my $s = "Il a dit : \"Est-ce que pi 3.14 ? (Je ne suis pas sûr).\"";
print join("|", $s =~ m/ ( .+? \b ) /xg), "\n";
print join("|", $s =~ m/ ( .+? \b{wb} ) /xg), "\n";
impressions
Il| |dit|, "|Est| |pi| |3|.|14|? (|I|'|m| |pas| |sûr
Il| |dit|,| |"|Est| |pi| |3.14|?| |(|Je suis| |pas| |sûr|)|.|"

Divers
Nous documentons ici les séquences de barres obliques inverses qui n'entrent pas dans l'une des catégories ci-dessus.
Ce sont:

\C (obsolète.) "\C" correspond toujours à un seul octet, même si la chaîne source est codée
au format UTF-8, et le caractère à faire correspondre est un caractère multi-octets. C'est
très dangereux, car il viole l'abstraction de caractère logique et peut provoquer
Les séquences UTF-8 deviennent malformées.

Utilisez "utf8::encode()" à la place.

Mnémonique : oCoff.

\K Ceci est apparu dans perl 5.10.0. Tout ce qui correspond à gauche de "\K" n'est pas inclus dans $&, et
ne sera pas remplacé si le motif est utilisé dans une substitution. Cela vous permet d'écrire
"s/PAT1 \K PAT2/REPL/x" au lieu de "s/(PAT1) PAT2/${1}REPL/x" ou "s/(?<=PAT1)
PAT2/REPL/x".

Mnémonique: Kep.

\N Cette fonctionnalité, disponible à partir de la v5.12, correspond à tout caractère pas a
nouvelle ligne. C'est un raccourci pour écrire "[^\n]", et est identique au "."
métasymbole, sauf sous le drapeau "/s", qui change le sens de ".", mais pas
"\N".

Notez que "\N{...}" peut signifier un caractère nommé ou numéroté .

Mnémonique : Complément de \n.

\R "\R" correspond à un générique nouvelle ligne; c'est-à-dire tout ce qui est considéré comme une séquence de saut de ligne par
Unicode. Cela inclut tous les caractères correspondant à "\v" (espace blanc vertical) et le
séquence de plusieurs caractères "\x0D\x0A" (retour chariot suivi d'un saut de ligne,
parfois appelé le saut de ligne du réseau ; c'est la séquence de fin de ligne utilisée dans Microsoft
fichiers texte ouverts en mode binaire). "\R" équivaut à "(?>\x0D\x0A|\v)". (Le
la raison pour laquelle il ne revient pas en arrière est que la séquence est considérée comme inséparable. Cette
signifie que

"\x0D\x0A" =~ /^\R\x0A$/ # Aucune correspondance

échoue, car le "\R" correspond à la chaîne entière et ne reviendra pas en arrière pour correspondre simplement
le "\x0D".) Étant donné que "\R" peut correspondre à une séquence de plus d'un caractère, il ne peut pas être
mettre à l'intérieur d'une classe de caractères entre crochets ; "/[\R]/" est une erreur ; utilisez "\v" à la place. "\R"
a été introduit dans perl 5.10.0.

Notez que cela ne respecte pas les paramètres régionaux qui pourraient être en vigueur ; ça correspond
selon le jeu de caractères natif de la plate-forme.

Mnémonique : aucun vraiment. "\R" a été choisi car PCRE utilise déjà "\R", et plus
important parce qu'Unicode recommande un tel métacaractère d'expression régulière, et
suggère "\R" comme notation.

\X Cela correspond à un Unicode prolongé graphème grappe.

"\X" correspond assez bien à ce que l'utilisation normale (non-Unicode-programmeur) considérerait comme un
seul personnage. Par exemple, considérons un G avec une sorte de signe diacritique, tel
comme une flèche. Il n'y a pas de tel caractère unique en Unicode, mais il peut être composé par
en utilisant un G suivi d'un Unicode "COMBINER LA FLÈCHE VERS LE HAUT CI-DESSOUS", et serait
affiché par le logiciel compatible Unicode comme s'il s'agissait d'un seul caractère.

Le match est gourmand et sans retour en arrière, de sorte que le cluster n'est jamais divisé en
composants plus petits.

Voir aussi "\b{gcb}".

Mnémonique : eXcaractère Unicode tendu.

Exemples

$str =~ s/foo\Kbar/baz/g; # Remplacez n'importe quel 'bar' après un 'foo' par 'baz'
$str =~ s/(.)\K\g1//g; # Supprimez les caractères dupliqués.

"\n" =~ /^\R$/; # Correspondance, \n est une nouvelle ligne générique.
"\r" =~ /^\R$/; # Correspondance, \r est une nouvelle ligne générique.
"\r\n" =~ /^\R$/; # Match, \r\n est une nouvelle ligne générique.

"P\x{307}" =~ /^\X$/ # \X correspond à un P avec un point au-dessus.

Utilisez perlrebackslash en ligne en utilisant les services onworks.net


Serveurs et postes de travail gratuits

Télécharger des applications Windows et Linux

Commandes Linux

Ad




×
Publicité
❤ ️Achetez, réservez ou achetez ici — gratuitement, contribue à maintenir la gratuité des services.