Python ne semble pas avoir de littéraux d'expression régulière comme perl et ruby
Importez le module re lors de l'utilisation d'expressions régulières
import re
Le préfixe d'un littéral de chaîne avec r désactive la séquence d'échappement pour cette chaîne. (Quelque chose comme @ "~" en C #)
"C:¥¥My Document¥¥fire¥¥test.txt"
À
r"C:¥My Document¥fire¥test.txt"
Peut être écrit.
Il semble que r soit capital.
R"C:¥My Document¥fire¥test.txt"
import re
m = re.match(r"FIRE[0-9]+", "FIRE123")
if m:
print("apparié")
else:
print("Pas adapté")
En plus de la méthode de correspondance, il existe également une méthode de recherche. La méthode match vérifie si elle correspond en premier et la méthode de recherche regarde si elle correspond au milieu de la chaîne.
m = re.match(r"FIRE[0-9]+", "Python FIRE123") #Ne correspondent pas
m = re.search(r"FIRE[0-9]+", "Python FIRE123") #rencontre
m = re.search(r"([a-z]+)\s*=\s*([0-9]+)", "index = 123")
if m:
print(m.group(0)) # -> "index = 123"
print(m.group(1)) # -> "index"
print(m.group(2)) # -> "123"
Le groupe nommé est (? P
m = re.search(r"(?P<name>[a-z]+)\s*=\s*(?P<value>[0-9]+)", "index = 123")
if m:
print(m.group(0)) # -> "index = 123"
print(m.group(1)) # -> "index"
print(m.group(2)) # -> "123"
print(m.group('name')) # -> "index"
print(m.group('value')) # -> "123"
m = re.match(r"abc([0-9]+).([0-9]+)", "abc123.456")
#---Match complet
print(m.start()) # -> 0
print(m.end()) # ->10 * end est la prochaine position correspondante (index)+La valeur 1) est renvoyée
print(m.span()) # -> (0, 10)Renvoie le début et la fin sous forme de taple
#---Groupe 1
print(m.start(1)) # -> 3
print(m.end(1)) # -> 6
print(m.span(1)) # -> (3, 6)
#---Groupe 2
print(m.start(2)) # -> 7
print(m.end(2)) # -> 10
print(m.span(2)) # -> (7, 10)
reg = re.compile(r"ABC([0-9]+)")
m = reg.match("ABC888")
print(m.group(1)) # -> "888"
match_list = re.findall(r'([0-9]+)', "123a456b789")
print(match_list) # -> ['123', '456', '789']
Recommended Posts