avatar of 发明者量化-小小梦 发明者量化-小小梦
Suivre Messages privés
4
Suivre
1271
Abonnés

Apprendre les expressions régulières de manière systématique (I) : Les bases

Créé le: 2017-03-29 10:52:47, Mis à jour le: 2020-11-18 12:39:53
comments   2
hits   3010

Apprendre les expressions régulières de manière systématique (I) : Les bases

Quels sont les expressions régulières Une expression régulière est une combinaison de caractères particuliers, définis à l’avance, qui forment un ensemble de chaînes de règles de chaînes, utilisées pour exprimer une logique de filtrage de chaînes.

  • Les expressions régulières permettent d’atteindre les objectifs suivants:
  给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”);
  可以通过正则表达式,从字符串中获取我们想要的特定部分。

Pour faciliter l’apprentissage, nous vous recommandons Regextor, un logiciel de validation d’expressions régulières, que vous pouvez consulter dans mon article, qui contient de nombreux bons logiciels pour Mac.

Apprendre les expressions régulières de manière systématique (I) : Les bases

Les règles de l’expression régulière sont décrites comme suit:

  • #### Correspondance avec le texte ordinaire

Une expression régulière ne peut contenir que du texte ordinaire, et doit correspondre exactement à ce texte. Par exemple:

L’expression officielle est:song Le texte en espagnol de l’article est en espagnol. Résultats du match: xiaosongge,xiaoSongge Par défaut, les expressions régulières sont majuscules et minuscules, donc song ne correspond pas à “Song”. Cependant, la plupart des implémentations d’expressions régulières fournissent une option indiquant que les majuscules et minuscules ne sont pas distingués.

  

  

  • #### Correspondance de caractères aléatoires

. Utilisé pour faire correspondre un caractère au hasard, par exemple:

Expression régulière: c.t Il y a un lien entre le film et le film Cat cet caaat dog Résultats après match:cat cet caaat dog Analyse: c.t correspond à une chaîne de caractères commençant par “ c ” et se terminant par “ t ” avec un caractère arbitraire au milieu.

Il est également possible de faire correspondre plusieurs caractères aléatoires:

Expression régulière: c..t Le texte en attente de correspondance: cat cet caat dog Résultats après match: cat cet caat dog

  

  

  • #### Correspondance avec les caractères spéciaux

. dans une expression régulière contient une signification spéciale, c’est un caractère spécial. .\ est aussi un caractère spécial qui peut servir de traduction pour les caractères spéciaux. Si vous voulez faire correspondre un vrai caractère “ . “, il faut ajouter ” .\ “ avant de traduire le caractère..Le caractère ” . “ représente le véritable .

Expression régulière: c.t Le texte en attente de correspondance: cat c.t dog Résultats de la recherche: catc.t dog Remarque: comme \ est aussi un caractère spécial, il faut utiliser deux diapositives pour faire correspondre un vrai .\:

Expression régulière: c\t À voir avec le texte: cat c\t dog Résultats de la recherche: catc\t dog

  

  

  • #### Utiliser un jeu de caractères

Je peux faire correspondre n’importe quel caractère, mais que faire si je veux faire correspondre plusieurs caractères spécifiques ?[et le [métal ].

Expression régulière: c[ab]t Pour le texte: cat cbt cet Résultats après match:cat cbt cet Une analyse:[ab] correspond à “a” ou “b” ≠ c[ab]t correspond à cat et cbt mais pas à cet

  

  

  • #### Utiliser une bande de caractères

Dans l’exemple ci-dessus, si je veux faire correspondre cet,[[Est-ce qu’il y en a un de plus ?] Donc si je veux faire correspondre n’importe quelle petite lettre, est-ce que je vais écrire des dizaines de lettres dedans ? C’est possible, mais c’est trop long.[a-z]:

Expression régulière: c[a-z]t Pour le texte: cat cbt czt c2t Résultats après match:cat cbt czt c2t Analyse réalisée par: c[a-z]t représente une lettre qui commence par “ c ” et se termine par “ t “, avec au milieu une lettre quelconque des lettres ” a “ - ” z “.

Il y a d’autres espaces similaires:

[0 à 9] et[La fonctionnalité est la même que celle de 0123456789]: faire correspondre tous les chiffres. [A-F] correspond aux lettres majuscules de A à F. [A-Z] correspond à toutes les lettres majuscules de A à Z. [a-z] correspond à tous les petits caractères de a à z. [A-z] correspond à tous les caractères de l’ASCII A à l’ASCII z, et non seulement à tous les caractères, mais aussi aux caractères de l’ASCII A à z, comme[Les autres sont les suivants: [A-Za-z0-9] correspond à la taille de toutes les lettres et chiffres.

  

  

  • #### Correspondance des non-ensembles de caractères

Les ensembles de caractères sont généralement utilisés pour spécifier un groupe de caractères qui doivent être appariés. Parfois, cependant, vous souhaitez exclure un groupe de caractères que vous ne souhaitez pas apparier. Cela peut être réalisé par la négation de l’ensemble de caractères. Par exemple:

Expression régulière: c[^a-z]t Pour le texte de la correspondance: cat cbt czt c2t cAt Résultats après match: cat cbt czt c2t cAt Analyse: C’est le contraire de l’exemple précédent.[a-z] correspond à toutes les lettres minuscules, alors que [^a-z] correspond à tous les caractères qui ne sont pas en minuscules。

Notez que le caractère ^ annule la correspondance de tous les caractères du jeu de caractères.

  

  

  • #### Caractères originaux

Les caractères métalliques ont une signification particulière dans les expressions régulières, comme nous l’avons dit plus haut.[Les caractères ne peuvent pas être utilisés pour exprimer directement leur signification, par exemple,[Pour faire correspondre.[“Utiliser pour faire correspondre”.

Tous les méta-characters peuvent être précédés d’une traduction en italique inverse, et lorsqu’ils sont traduits, les caractères correspondent à eux-mêmes plutôt qu’à leur signification particulière. Par exemple,[Je vais faire un match.[ “:

Expression régulière: a[b Texte à faire correspondre:[b ab a[[b Résultats après match:a[b ab a[[b Remarque: \ est utilisé comme caractère transitif, ce qui signifie que \ est aussi un caractère métallique. Donc, si vous avez besoin de faire correspondre le vrai ” \ “, vous pouvez utiliser\:

Expression régulière: a\b Texte à faire correspondre:\b a\b a[[b Résultats après correspondance: a\b a\b a[[b

  

  

  • #### Caractères blancs

Parfois, vous devrez peut-être faire correspondre des caractères blancs qui ne peuvent pas être imprimés dans le texte. Par exemple, vous souhaitez pouvoir trouver tous les caractères Tab, ou tous les caractères de remplacement. Vous pouvez utiliser les caractères spéciaux de la table suivante:

Apprendre les expressions régulières de manière systématique (I) : Les bases

Par exemple, \r\n correspond à une combinaison de changement d’itinéraire de retour, représentant un changement de file dans Windows. Dans les systèmes Linux et Unix, il suffit d’utiliser \n pour cela.

  

  

  • #### Pour correspondre à un type de caractère spécifique

Il existe des méta-characters spéciaux qui peuvent être utilisés pour faire correspondre des ensembles de caractères couramment utilisés. Ces méta-characters sont appelés classes de caractères de correspondance. Vous trouverez qu’il est très pratique de les utiliser.

Numéros de correspondance ou non Il est vrai qu’il est difficile de trouver un emploi.[0-9] peut correspondre à tous les nombres. Si vous ne voulez pas correspondre à aucun nombre, vous pouvez utiliser[^0-9]。 La liste des caractères numériques et non numériques est la suivante:

Apprendre les expressions régulières de manière systématique (I) : Les bases

Expression régulière: Pour le texte: cat c2t czt c9t Résultats de la recherche: catc2t czt c9t

Expression régulière: Pour le texte: cat c2t czt c9t Résultats après match:cat c2t czt c9t Correspondance des caractères alphabétiques et non alphabétiques Un autre caractère métaphorique commun est \w et \W:

Apprendre les expressions régulières de manière systématique (I) : Les bases

Expression régulière: c\wt Pour correspondre au texte: cat c2t czt c-t c\t Résultats après match:cat c2t c-t c\t

Expression régulière: Pour correspondre au texte: cat c2t c-t c\t Résultats après match: cat c2tc-t c\t Correspondance entre les espaces vides et les espaces non vides La dernière catégorie de correspondance que vous rencontrerez est une catégorie vide:

Apprendre les expressions régulières de manière systématique (I) : Les bases

Expression régulière: Pour correspondre au texte: cat c t c2t c\t Résultats de la recherche: catc t c2t c\t

Expression régulière: Pour correspondre au texte: cat c t c2t c\t Résultats après match:cat c t c2t c\t

  

  

  • #### Matcher un ou plusieurs caractères

Les caractères + et + correspondent à un ou plusieurs caractères. Par exemple, a correspond à “a” et a+ correspond à un ou plusieurs “a”.

Expression régulière: cat Le texte en attente de correspondance: ct cat caat caaat Résultats de la correspondance: ctcat caat caaat

Expression régulière: ca + t Le texte en attente de correspondance: ct cat caat caaat Résultats de la correspondance: ctcat caat caaat Lorsque vous utilisez + sur un jeu de caractères, le signe + doit être placé à l’extérieur du jeu:

Expression régulière: c[0-9]+t Pour le texte: ct c0t cat c123t Résultats de la correspondance: ctc0t cat c123t Analyse réalisée par: c[0-9] + t représente une chaîne de caractères commençant par “ c ” et se terminant par “ t ” avec un ou plusieurs chiffres au milieu.

Bien sûr.[0-9+] est aussi une expression régulière légitime, mais elle représente un ensemble de caractères qui contient les symboles “ 0 ” - “ 9 ” et “ + “

En général, les caractères métalliques tels que . et + sont utilisés comme signification littérale pour les ensembles de caractères, il n’est donc pas nécessaire de les traduire.[0 à 9+] et[0-9+Les fonctions sont les mêmes.

Remarque: + est un caractère métallique, et “+” nécessite une traduction+。

  

  

  • #### Matcher zéro ou plus de caractères

Si vous souhaitez faire correspondre zéro caractères ou plus, vous pouvez utiliser*Nom de l’alphabet:

Expression régulière:*t Pour le texte de la correspondance: ct cat caat cbt Résultats après match:ct cat caat cbt Avis:*Les symboles sont des caractères métalliques. Pour pouvoir correspondre à “ * “, il faut faire une translittération.*。

  

  

  • #### Matcher des zéros ou un caractère

? correspond à un zéro ou à un caractère. Ainsi, ? est parfait pour correspondre à un caractère optionnel dans un texte.

Expression régulière: ca?t Pour le texte de la correspondance: ct cat caat cbt Résultats après match:ct cat caat cbt Remarque: le symbole ? est un caractère métallique.?。

  

  

  • #### Nombre de correspondances utilisées

Les expressions régulières permettent de spécifier le nombre de fois où une correspondance est faite. Le nombre de fois peut être spécifié entre les lignes { } Remarque: { et } sont également des caractères de base, et doivent être traduits lorsqu’ils sont utilisés au sens littéral.

Nombre exact de correspondances Pour spécifier le nombre de correspondances, vous pouvez entrer un nombre entre { et }. Par exemple, { 3 } correspondra à 3 caractères ou ensembles précédents:

Expression régulière: ca{3}t Le texte en attendant le match: ct cat caaat cbt Résultats après match: ct cat caaat cbt Nombre minimum de correspondances On peut aussi spécifier que les valeurs minimales correspondent. Par exemple, {2,} signifie correspondre 2 fois ou plus:

Expression régulière: ca{1,}t Le texte en attendant le match: ct cat caaat cbt Résultats de la correspondance: ctcat caaat cbt Correspondance entre les espaces dimensionnels Nous pouvons également utiliser les valeurs minimale et maximale pour déterminer le nombre de correspondances. Par exemple, {2,3} signifie un minimum de 2 correspondances et un maximum de 3 correspondances.

Expression régulière: Le texte en attendant le match: ct cat caaat cbt Résultats après match: ct cat caaat cbt Donc ? et la fonction de {0,1} est la même que la fonction de {1,}

  

  

  • #### Une correspondance sans cupidité

Pour commencer, regardez les exemples suivants:

Expression régulière: s.*g Le texte en espagnol de la chanson xiao song Résultats du match: xiao song xiao song Le débat est ouvert.*g ne fait pas correspondre deux ” songs “ comme prévu, mais tout le texte entre le premier ” s “ et le dernier ” g “.

C’est parce que*et + sont des correspondances avides. C’est-à-dire que les expressions régulières recherchent toujours le plus grand nombre de correspondances, et non le plus petit, ce qui est intentionnel.

Mais si vous ne voulez pas d’une correspondance avide, utilisez les correspondances non avides de ces mots quantiques (matchez le moins de caractères possible).

Apprendre les expressions régulières de manière systématique (I) : Les bases

*- Je sais.*Une version non-corrupte est disponible.*Pour modifier l’exemple ci-dessus:

Expression régulière: s.?g Le texte en espagnol de la chanson xiao song Résultats du match: xiaosong xiao song Analyse: vous pouvez voir s.?g correspond à deux chansons.

  

  

  • #### Définir les limites de la chaîne

Les caractères métalliques correspondant aux frontières des chaînes de caractères sont ^ et $, respectivement utilisés au début et à la fin de la chaîne de caractères。

↑ Utilisation:

Expression régulière: ^xiao

Le texte en espagnol de l’article est en espagnol. Résultats après match:xiaosong

Il a été publié dans la revue de l’opinion publique de la ville de New York, New York Times. Résultats du match: axiaosong Analyse: ^xiao correspond à une chaîne commençant par ” xiao “ .

$ est utilisé comme suit:

L’expression officielle est song$.

Le texte en espagnol de l’article est en espagnol. Résultats du match: xiaosong

Le texte en espagnol de Xiaosonga est en espagnol. Résultats du match: Xiaosonga Analyse: song$ correspond à une chaîne de caractères se terminant par ” song “

Partagé par:

Expression régulière: ^[0-9a-zA-Z]{4,}$

Texte à faire correspondre: Résultats après match:a1b234ABC

Le texte en attente de correspondance: + a1b23 = 4ABC Résultat après correspondance: + a1b23 = 4ABC Pour l’analyse:[0-9a-zA-Z]{4,}$ correspond à une chaîne de caractères composée de chiffres ou de lettres et dont le nombre de chiffres est supérieur ou égal à quatre chiffres.

Remarque: ^ si elle se trouve au début de l’ensemble, elle est négative; si elle se trouve à l’extérieur de l’ensemble, elle correspond au début de la chaîne.[^0-9] et ^[Différence entre 0 et 9]

  

  

  • #### Utilisation du mode multi-lignes

Cependant, il est possible d’activer le mode multiline {{?m}}. En mode multiline, le moteur d’expression régulière utilise les virgules comme séparateurs de chaînes. ^ correspond au début du texte ou au début d’une ligne, tandis que $ peut correspondre à la fin du texte ou à la fin d’une ligne.

Modifiez l’exemple précédent:

Expression régulière:[0-9a-zA-Z]{4,}$

Texte à faire correspondre: +a1b23=4ABC ABC123456

Résultats après match:a1b234ABC +a1b23=4ABC ABC123456 Pour les analyses:[0-9a-zA-Z]{4,}$ correspond à une chaîne de caractères de quatre chiffres ou de lettres par ligne et dont le nombre de chiffres est supérieur ou égal à quatre chiffres.

Remarque: si vous utilisez le mode multiligne, le signe [?m] doit être placé au début de l’expression régulière. (?m) n’est pas pris en charge dans la plupart des implémentations d’expressions régulières. Certaines implémentations d’expressions régulières prennent en charge le début de la chaîne de correspondance \A et la fin de la chaîne de correspondance \Z. Si elles sont prises en charge, ces métadonnées ont la même fonction que ^, $.

Ce premier article traite des bases, puis vous pourrez lire l’article suivant sur l’apprentissage systématique de l’expression régulière ((ii): l’article progressif 。

Le film a été réalisé par le cinéaste japonais Yoshihiro Takahata.