Python Language Corrisponde all'inizio di una stringa


Esempio

Il primo argomento di re.match() è l'espressione regolare, il secondo è la stringa da abbinare:

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'

Si può notare che la variabile pattern è una stringa preceduta da r , che indica che la stringa è un letterale stringa raw .

Un letterale stringa raw ha una sintassi leggermente diversa rispetto a un letterale stringa, ovvero una barra rovesciata \ in una stringa raw significa letteralmente "solo un backslash" e non è necessario raddoppiare i backlashes per evitare "sequenze di escape" come newlines ( \n ) , schede ( \t ), backspaces ( \ ), form-feeds ( \r ) e così via. In normali stringhe di stringa, ogni backslash deve essere raddoppiata per evitare di essere presa come l'inizio di una sequenza di escape.

Quindi, r"\n" è una stringa di 2 caratteri: \ e n . Anche i pattern Regex usano i backslash, ad esempio \d riferisce a qualsiasi carattere numerico. È possibile evitare di dover eseguire il doppio escape delle stringhe ( "\\d" ) utilizzando stringhe non elaborate ( r"\d" ).

Per esempio:

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 corrispondenza viene eseguita solo dall'inizio della stringa. Se vuoi abbinare ovunque usa re.search :

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

match is None
# Out: True

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

match.group()
# Out: '123'