L'expression régulière (expression régulière) décrit un modèle de correspondance de chaîne, qui peut être utilisé pour vérifier si une chaîne contient une certaine sous-chaîne, remplacer la sous-chaîne correspondante ou extraire une sous-chaîne qui répond à une certaine condition d'une certaine chaîne d'attente.
La fonction d'expression régulière du langage Perl est très puissante, fondamentalement la plus puissante parmi les langages couramment utilisés. De nombreux langages font référence aux expressions régulières de Perl lors de la conception de la prise en charge des expressions régulières.
Les trois formes d'expressions régulières Perl sont la correspondance, le remplacement et la transformation :
Correspondance : m/
Remplacement : s/
Conversion : tr/
Ces trois formes sont généralement utilisées avec =~ ou !~ , =~ signifie correspondance, !~ signifie ne pas correspondre.
L'opérateur de correspondance m// est utilisé pour faire correspondre une instruction de chaîne ou une expression régulière. Par exemple, pour faire correspondre "run" dans la barre $ scalaire, le code est le suivant :
En exécutant le programme ci-dessus, le résultat de sortie est :
Premier match Deuxième match
La correspondance de modèles comporte certains modificateurs couramment utilisés, comme indiqué dans le tableau suivant :
modificateur | décrire |
---|---|
je | Ignorer la casse dans le modèle |
m | mode multiligne |
o | Attribuer une valeur une seule fois |
s | Mode ligne unique, "." correspond à "n" (la valeur par défaut ne correspond pas) |
x | Ignorer les espaces dans le motif |
g | match mondial |
cg | Après l'échec de la correspondance globale, la chaîne correspondante peut être recherchée à nouveau. |
Une fois Perl traité, il y aura trois noms de variables spéciaux pour les valeurs correspondantes :
$` : La partie précédente de la chaîne correspondante
$& : chaîne correspondante
$' : Il n'y a pas encore de chaînes restantes correspondantes
Si vous rassemblez ces trois variables, vous obtiendrez la chaîne d'origine.
Les exemples sont les suivants :
Le résultat de l’exécution du programme ci-dessus est :
Chaîne avant correspondance : bienvenue dans Chaîne avant correspondance : exécutez Chaîne après correspondance : site oob.
L'opérateur de remplacement s/// est une extension de l'opérateur de correspondance et remplace la chaîne spécifiée par une nouvelle chaîne. Le format de base est le suivant :
s/MOTIF/REMPLACEMENT/;
PATTERN est le modèle correspondant, REPLACEMENT est la chaîne de remplacement.
Par exemple, nous remplaçons « google » dans la chaîne suivante par « codercto » :
Le résultat de l’exécution du programme ci-dessus est :
bienvenue sur le site codercto.
Les modificateurs d'opération de remplacement sont présentés dans le tableau suivant :
modificateur | décrire |
---|---|
je | Si "i" est ajouté au modificateur, l'expression régulière annulera le respect de la casse, c'est-à-dire que "a" et "A" sont identiques. |
m | Le début et la fin réguliers par défaut "^" et la fin "$" 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 "^". ", Cela se termine par "$". |
o | L'expression n'est exécutée qu'une seule fois. |
s | Si "s" est ajouté au modificateur, le "." par défaut représentant tout caractère autre que les caractères de nouvelle ligne deviendra n'importe quel caractère, y compris les caractères de nouvelle ligne ! |
x | Si ce modificateur est ajouté, les espaces dans l'expression seront ignorés à moins qu'ils n'aient été échappés. |
g | Remplacez toutes les chaînes correspondantes. |
e | Remplacer la chaîne comme expression |
Voici les modificateurs liés à l'opérateur de conversion :
modificateur | décrire |
---|---|
c | Convertir tous les caractères non spécifiés |
d | Supprimer tous les caractères spécifiés |
s | Condenser plusieurs caractères de sortie identiques en un seul |
L'exemple suivant convertit toutes les lettres minuscules de la variable $string en lettres majuscules :
#!/usr/bin/perl $string = 'bienvenue sur le site codercto.';$string =~ tr/az/Az/;print "$stringn";
Le résultat de l’exécution du programme ci-dessus est :
BIENVENUE SUR LE SITE CODERCTO.
L'exemple suivant utilise /s pour supprimer les caractères répétés de la variable $string :
Le résultat de l’exécution du programme ci-dessus est :
runob
Plus d'exemples :
$string =~ tr/d/ /c; # Remplacer tous les caractères non numériques par des espaces $string =~ tr/t //d # Supprimer les tabulations et les espaces $string =~ tr/0-9/ /cs; # Remplacez les autres caractères entre les nombres par un espace.
expression | décrire |
---|---|
. | Correspond à tous les caractères sauf les caractères de nouvelle ligne |
x? | Correspond à x chaîne 0 ou une fois |
x* | Correspond à x chaîne 0 fois ou plus, mais correspond au nombre minimum de fois possible |
x+ | Correspond à x chaîne 1 fois ou plus, mais correspond au nombre minimum de fois possible |
.* | Correspond à n'importe quel caractère 0 fois ou plus |
.+ | Faites correspondre n'importe quel personnage 1 ou plusieurs fois |
{m} | Correspond exactement aux m chaînes spécifiées |
{m,n} | Correspond à plus de m et moins de n chaînes spécifiées |
{m,} | Correspond à m ou plusieurs chaînes spécifiées |
[] | Correspond aux caractères entre [] |
[^] | Correspond aux caractères qui ne correspondent pas à [] |
[0-9] | Correspond à tous les caractères numériques |
[az] | Correspond à tous les caractères alphabétiques minuscules |
[^0-9] | Correspond à tous les caractères non numériques |
[^az] | Correspond à tous les caractères alphabétiques non minuscules |
^ | Correspond aux caractères commençant par |
$ | Correspond au caractère à la fin du caractère |
d | Correspond à un caractère numérique, même syntaxe que [0-9] |
d+ | Correspond à plusieurs chaînes numériques, même syntaxe que [0-9]+ |
D | Non-numéro, le même que les autresd |
D+ | Non-numéro, identique à d+ pour les autres |
w | Une chaîne de lettres ou de chiffres anglais, la même syntaxe que [a-zA-Z0-9_] |
w+ | Même syntaxe que [a-zA-Z0-9_]+ |
W | Une chaîne de lettres ou de chiffres non anglais, la même syntaxe que [^a-zA-Z0-9_] |
W+ | Même syntaxe que [^a-zA-Z0-9_]+ |
s | Espace, même syntaxe que [ntrf] |
s+ | Identique à [ntrf]+ |
S | Non-espace, même syntaxe que [^ntrf] |
S+ | Même syntaxe que [^ntrf]+ |
b | Correspond aux chaînes délimitées par des lettres et des chiffres anglais |
B | Correspond aux chaînes qui ne sont pas délimitées par des lettres anglaises ou des valeurs numériques |
a|b|c | Correspond aux chaînes qui correspondent à un caractère, un caractère b ou un caractère c |
abc | Correspond à la chaîne (modèle) contenant abc () Ce symbole mémorisera la chaîne trouvée, ce qui est une syntaxe très pratique. La chaîne trouvée dans le premier () devient la variable $1 ou 1, la chaîne trouvée dans le second (). devient la variable $2 ou la variable 2, et ainsi de suite. |
/motif/je | i Ce paramètre indique que la casse anglaise est ignorée, c'est-à-dire que lors de la correspondance de chaînes, le problème de la casse anglaise n'est pas pris en compte. Si vous souhaitez rechercher un caractère spécial en mode motif, tel que "*", vous devez l'ajouter avant ce caractère Utilisez le symbole pour invalider les caractères spéciaux. |