Recherche…


Remarques

Terminologie

Le caractère Caret (^) est également désigné par les termes suivants:

  • chapeau
  • contrôle
  • flèche vers le haut
  • chevron
  • accent circonflexe

Usage

Il a deux utilisations dans les expressions régulières:

  • Pour indiquer le début de la ligne
  • Si elle est utilisée immédiatement après un crochet ( [^ ], elle annule l'ensemble des caractères autorisés (c.-à-d. [123] signifie que le caractère 1, 2 ou 3 est autorisé, tandis que l'instruction [^123] signifie tout caractère autre que 1 , 2 ou 3 est autorisé.

Évasion de personnage

Pour exprimer un caret sans signification particulière, il faut l'éviter en le précédant par une barre oblique inverse; c'est à dire \^ .

Début de ligne

Lorsque le modificateur multiligne (?m) est désactivé , ^ ne correspond qu'au début de la chaîne d'entrée:

Pour le regex

^He

Les chaînes d'entrée suivantes correspondent à:

  • Hedgehog\nFirst line\nLast line
  • Help me, please
  • He

Et les chaînes d'entrée suivantes ne correspondent pas :

  • First line\nHedgehog\nLast line
  • IHedgehog
  • Hedgehog (dû aux espaces blancs )

Lorsque plusieurs lignes (?m) modificateur est activé, ^ correspond au début de chaque ligne:

^He

Ce qui précède correspondrait à toute chaîne d'entrée contenant une ligne commençant par He .

Considérant \n comme le nouveau caractère de ligne, les lignes suivantes correspondent:

  • Hello
  • First line\nHedgehog\nLast line (deuxième ligne seulement)
  • My\nText\nIs\nHere (dernière ligne seulement)

Et les chaînes d'entrée suivantes ne correspondent pas :

  • Camden Hells Brewery
  • Helmet (dû aux espaces blancs )

Faire correspondre les lignes vides en utilisant ^

Un autre cas d'utilisation typique de caret est la correspondance des lignes vides (ou une chaîne vide si le modificateur multi-lignes est désactivé).

Afin de faire correspondre une ligne vide (multi-line on ), un caret est utilisé à côté d'un $ qui est un autre caractère d'ancrage représentant la position en fin de ligne ( caractères d'ancre: Dollar ($) ). Par conséquent, l'expression régulière suivante correspondra à une ligne vide:

 ^$

Echapper au personnage du caret

Si vous devez utiliser le caractère ^ dans une classe de caractères ( classes de caractères ), placez-le ailleurs que dans le début de la classe:

[12^3]

Ou échapper à la ^ utilisant une barre oblique inverse \ :

[\^123]

Si vous souhaitez faire correspondre le caractère du caret lui-même en dehors d'une classe de personnage, vous devez y échapper:

\^

Cela évite que le ^ soit interprété comme le caractère d'ancrage représentant le début de la chaîne / ligne.

Comparaison du début de la ligne d'ancrage et du début de la chaîne d'ancrage

Alors que beaucoup de gens pensent que ^ signifie le début d'une chaîne, cela signifie en fait le début d'une ligne. Pour un début réel d'utilisation d'ancre de chaîne, \A

La chaîne hello\nworld (ou plus clairement)

hello
world

Serait égalé par les expressions régulières ^h , ^w et \Ah mais pas par \Aw

Modificateur multiligne

Par défaut, le caret ^ metacharacter correspond à la position avant le premier caractère de la chaîne.

Compte tenu de la chaîne " charsequence " appliquée aux modèles suivants: /^char/ & /^sequence/ , le moteur essaiera de faire correspondre les éléments suivants:

  • /^char/

    • ^ - charsequence
    • c - c harsequence
    • h - ch arsequence
    • a - cha rsequence
    • r - char séquence

    Match trouvé

  • /^sequence/

    • ^ - charsequence
    • s - charsequence

    Match non trouvé

Le même comportement sera appliqué même si la chaîne contient des terminateurs de ligne , tels que \r?\n Seule la position au début de la chaîne sera associée.

Par exemple:

/^/g

Harchar \ r \ n
\ r \ n
séquence

Cependant, si vous devez faire correspondre après chaque terminaison de ligne, vous devrez définir le mode multiligne ( //m , (?m) ) dans votre modèle. Ce faisant, le caret ^ correspondra « au début de chaque ligne », ce qui correspond à la position au début de la chaîne et les positions immédiatement après 1 Les terminaisons de ligne.

1 Dans certaines versions (Java, PCRE, ...), ^ ne correspondra pas après le terminateur de ligne, si le terminateur de ligne est le dernier de la chaîne.

Par exemple:

/^/gm

Harchar \ r \ n
┊ \ r \ n
Séquence

Certains des moteurs d’expression régulière prenant en charge le modificateur Multiline:

  • Java

    Pattern pattern = Pattern.compile("(?m)^abc");
    Pattern pattern = Pattern.compile("^abc", Pattern.MULTILINE);
    
  • .NET

    var abcRegex = new Regex("(?m)^abc");
    var abdRegex = new Regex("^abc", RegexOptions.Multiline)
    
  • PCRE

    /(?m)^abc/
    /^abc/m
    
  • Python 2 & 3 (module re intégré)

    abc_regex = re.compile("(?m)^abc");
    abc_regex = re.compile("^abc", re.MULTILINE); 
    


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow