Python Language Faire correspondre le début d'une chaîne


Exemple

Le premier argument de re.match() est l'expression régulière, la seconde est la chaîne à rechercher:

import re

pattern = r"123"
string = "123zzb"

re.match(pattern, string)
# Out: <_sre.SRE_Match object; span=(0, 3), match='123'>

match = re.match(pattern, string)

match.group()
# Out: '123'

Vous remarquerez peut-être que la variable de modèle est une chaîne avec le préfixe r , qui indique que la chaîne est un littéral de chaîne brut .

Une chaîne brute littérale a une syntaxe légèrement différente de celle d' une chaîne littérale, à savoir une barre oblique inverse \ dans un moyen littéral de chaîne brute « juste une barre oblique inverse » et il n'y a pas besoin de doubler contrecoups pour échapper à « échapper à des séquences » telles que les nouvelles lignes ( \n ) , onglets ( \t ), backspaces ( \ ), flux de formulaire ( \r ), etc. Dans les littéraux de chaîne normaux, chaque barre oblique inverse doit être doublée pour éviter d'être considérée comme le début d'une séquence d'échappement.

Par conséquent, r"\n" est une chaîne de 2 caractères: \ et n . Les modèles d'expressions rationnelles utilisent également des barres obliques inverses, par exemple \d fait référence à n'importe quel caractère numérique. Nous pouvons éviter de devoir échapper à nos chaînes ( "\\d" ) en utilisant des chaînes brutes ( r"\d" ).

Par exemple:

string = "\\t123zzb" # here the backslash is escaped, so there's no tab, just '\' and 't'
pattern = "\\t123"   # this will match \t (escaping the backslash) followed by 123
re.match(pattern, string).group()   # no match
re.match(pattern, "\t123zzb").group()  # matches '\t123'

pattern = r"\\t123"  
re.match(pattern, string).group()   # matches '\\t123'

La correspondance est faite depuis le début de la chaîne uniquement. Si vous souhaitez faire correspondre n'importe où, utilisez plutôt re.search :

match = re.match(r"(123)", "a123zzb")

match is None
# Out: True

match = re.search(r"(123)", "a123zzb")

match.group()
# Out: '123'