Maison  >  Article  >  développement back-end  >  Introduction détaillée aux expressions régulières en python

Introduction détaillée aux expressions régulières en python

不言
不言avant
2018-10-18 17:15:232546parcourir

Cet article vous apporte une introduction détaillée aux expressions régulières en python. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

Regular

re = expression régulière Le module
re permet au langage Python d'avoir toutes les fonctions d'expression régulière. La fonction
compile génère un objet d'expression régulière basé sur une chaîne de modèle et des arguments d'indicateur facultatifs. Cet objet dispose d'une série de méthodes pour la correspondance et le remplacement des expressions régulières.

Fonction : lors du traitement d'une chaîne, il vérifiera si le contenu de la chaîne correspond à l'expression régulière que vous avez écrite

S'il correspond, supprimez le contenu correspondant ;
S'il ne correspond pas. , ignorez-le. Contenu correspondant ;

Écrivez des règles régulières

modèle correspondant à une expression régulière
chaîne Chaîne à correspondre

Trois méthodes de recherche

1). findall
import re

str = 'hello sheen,hello cute.'

pattern_1 = r'hello'
pattern_2 = r'sheen'
print(re.findall(pattern_1,str))    #['hello', 'hello']
print(re.findall(pattern_2,str))    #['sheen']
2).match

match tente de faire correspondre à partir de la position de départ de la chaîne,

  • Si la position de départ ne correspond pas avec succès, renvoie un None ;

  • Si la position de départ correspond avec succès, renvoyez un objet ;

import re

str = 'hello sheen,hello cute.'

pattern_1 = r'hello'
pattern_2 = r'sheen'
print(re.match(pattern_1,str))           #<_sre.sre_match>
print(re.match(pattern_1,str).group())   #返回match匹配的字符串内容,hello
print(re.match(pattern_2,str))           #None</_sre.sre_match>
3).search

la recherche analysera la chaîne entière, seul Return le premier contenu correspondant avec succès ;

  • S'il peut être trouvé, renvoyez un objet et obtenez la chaîne correspondante via la méthode de groupe ;

import re

str = 'hello sheen,hello cute.'

pattern_1 = r'hello'
pattern_2 = r'sheen'
print(re.search(pattern_1,str))             #<_sre.sre_match>
print(re.search(pattern_1,str).group())     #hello
print(re.search(pattern_2,str))             #<_sre.sre_match>
print(re.search(pattern_2,str).group())     #sheen</_sre.sre_match></_sre.sre_match>

Classe de caractères spéciaux

. : correspond à n'importe quel caractère sauf [.n]
d : chiffre--(nombre), correspond à un caractère numérique, équivalent à [0 -9]
D : correspond à un caractère non numérique, équivalent à [^0-9]
s : espace (espace généralisé : espace, t, n, r), correspond à un seul caractère d'espacement S : correspond à n'importe quel caractère d'espacement sauf un seul ;
w : alphanumérique ou trait de soulignement, [a-zA-Z0-9_]
W : sauf alphanumérique ou trait de soulignement, [^ a-zA-Z0-9_ ]

import re

# .
print(re.findall(r'.','sheen\nstar\n'))     #['s', 'h', 'e', 'e', 'n', 's', 't', 'a', 'r']

#\d#\D
print(re.findall(r'\d','当前声望30'))       #['3', '0']
print(re.findall(r'\D','当前声望30'))       #['当', '前', '声', '望']

#\s#\S
print(re.findall(r'\s', '\n当前\r声望\t为30'))     #['\n', '\r', '\t']
print(re.findall(r'\S', '\n当前\r声望\t为30'))     #['当', '前', '声', '望', '为', '3', '0']

#\w#\W
print(re.findall(r'\w','lucky超可爱!!'))           #['l', 'u', 'c', 'k', 'y', '超', '可', '爱']
print(re.findall(r'\W','lucky超可爱!!'))           #['!', '!']

Introduction détaillée aux expressions régulières en python

Précisez le nombre d'occurrences du caractère

Faites correspondre les caractères Nombre de occurrences :

* : représente le caractère précédent apparaissant 0 fois ou une infinité de fois ; d*, .*

+ : représente le caractère précédent apparaissant une fois ou une infinité de fois d+
? : représente le précédent ; Un caractère apparaît 1 ou 0 fois ; en supposant que certains caractères peuvent être omis, vous pouvez également utiliser

lorsqu'il n'est pas omis. La deuxième méthode :

{m} : le caractère précédent apparaît m fois. ;

{m,} : Le caractère précédent apparaît au moins m fois ; * == {0,}; + ==={1,}
{m,n} : Le caractère précédent apparaît m fois pour n fois ; === {0,1}

import re

#* 代表前一个字符出现0次或者无限次
print(re.findall(r's*','sheenstar'))        #['s', '', '', '', '', 's', '', '', '', '']
print(re.findall(r's*','hello'))            #['', '', '', '', '', '']

#+ 代表前一个字符出现一次或者无限次
print(re.findall(r's+','sheenstar'))        #['s', 's']
print(re.findall(r's+','hello'))            #[]

# ? 代表前一个字符出现1次或者0次
print(re.findall(r'188-?', '188 6543'))     #['188']
print(re.findall(r'188-?', '188-6543'))     #['188-']
print(re.findall(r'188-?', '148-6543'))     #[]


# 匹配电话号码
pattern = r'\d{3}[\s-]?\d{4}[\s-]?\d{4}'
print(re.findall(pattern,'188 0123 4567'))      #['188 0123 4567']
print(re.findall(pattern,'188-0123-4567'))      #['188-0123-4567']
print(re.findall(pattern,'18801234567'))        #['188-0123-4567']

Exercice--correspondance IP

Vous pouvez rechercher le générateur d'expressions régulières sur Internet et utiliser il est écrit par d'autres Bonnes règles, testez-les vous-même.

import re

# | 表示或者
pattern = r'(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)$'

print(re.findall(pattern,'172.25.254.34'))  #[('172', '25', '254', '34')]

matchObj_1 = re.match(pattern,'172.25.254.34')
if matchObj_1:
    print('匹配项:',matchObj_1.group())                     #172.25.254.34
else:
    print('未找到匹配项')

matchObj_2 = re.match(pattern,'172.25.254.343')
if matchObj_2:
    print('匹配项:',matchObj_2.group())                     
else:
    print('未找到匹配项')

Introduction détaillée aux expressions régulières en python

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer