Maison >développement back-end >Tutoriel Python >Notes sur les expressions régulières Python

Notes sur les expressions régulières Python

coldplay.xixi
coldplay.xixiavant
2021-02-01 17:58:341852parcourir

Notes sur les expressions régulières Python

Répertoire d'articles

  • 0. Préface
  • 1. . Modificateurs d'expression régulière - indicateurs facultatifs
  • 2.1, `re.IGNORECASE`(`re.I`)
    • 2.2, `re.ASCII` (`re. A`)
    • 2.3, `re.DOTALL` (`re.S`)
    • 2.4, `re.MULTILINE`(`re.M`)
    • 2.5 , `re.VERBOSE`(re. >
    • 3.1. Fonction pour trouver une seule correspondance
    Exemple 3.1.1
  • Exemple 3.1.2
  • Exemple 3.1. 3
    • 3.2. Fonction pour trouver plusieurs éléments correspondants
      • Exemple 3.2.1
      3.3. Split
    • Exemple 3.3.1
    • import re
    • 0. Préface
      • Cette note est basée sur le tutoriel novice et le tutoriel Zhihu, et intègre certaines de mes propres expériences d'apprentissage.
    1. Modèle d'expression régulière

Les points forts sont mes ajouts, car ils peuvent en effet être assortis en fonction de la situation réelle

J'étais un peu paresseux ici et je viens de prendre une capture d'écran du tutoriel novice.

2. Modificateur d'expression régulière - indicateur facultatif Notes sur les expressions régulières Python


2.1, Notes sur les expressions régulières Python(

)

Bien que la section 1 est une constante, il faut d'abord mentionner brièvement cette fonction, puisque c'est la fonction utilisée tout au long de cette section.

 : recherchez n'importe où dans la chaîne et renvoie une liste.

est le caractère (chaîne) à rechercher, est la source de recherche, re.IGNORECASE est le modificateur, la valeur par défaut est 0re.I

fonctions pour ignorer la casse des caractères

text = "I'm Jasmine-Feng. My student number is No. 321432"pattern = r"Jasmine-FENG"print('Default: ', re.findall(pattern,text))print('Ignore upper/lower case: ', re.findall(pattern,text,flags=re.I))
re.findall
N.B.re.findall(pattern, string, flag=0) se voit attribuer une patternr stringstring La fonction de cette r string est d'éviter de s'échapper r est l'abréviation de raw, ce qui signifie de la garder telle quelle. . Voir cet article de blog. De manière générale, cette chaîne r sera utilisée lors de l'utilisation d'expressions régulières. flag
Default:  []Ignore upper/lower case:  ['Jasmine-Feng']Process finished with exit code 0
Par défaut, il est sensible à la casse et ENG ne peut pas être trouvé ; s'il n'est pas distingué, eng peut être trouvé ;

re.I

2.2,

()

doit correspondre uniquement aux caractères pris en charge par le code ASCII, alors à quels caractères fait-il spécifiquement référence ? L'image ci-dessous provient de l'Encyclopédie Baidu.

Les caractères chinois ne sont pas inclus, donc si le modificateur est , il ne correspondra pas aux caractères chinois ~re.ASCII

text = "我是Jasmine-Feng. 我的学号是No. 321432"pattern = r"\w+"print('Default: ', re.findall(pattern,text))print('ASCII: ', re.findall(pattern,text,flags=re.A))
re.A est utilisé pour correspondre à un ou plusieurs Caractères chinois soulignés alphanumériques

Default:  ['我是Jasmine', 'Feng', '我的学号是No', '321432']ASCII:  ['Jasmine', 'Feng', 'No', '321432']Process finished with exit code 0

re.A2.3,
(Notes sur les expressions régulières Python)
re.A

En mode expression régulière,

est utilisé pour w+

text = "我\t是Jasmine-F\neng. 我%的◉学号是No. 321432"pattern = r'.*'print('Default: ', re.findall(pattern,text))print('DOTALL: ', re.findall(pattern,text,re.S))

est utilisé pour faire correspondre des caractères (chaînes) d'une longueur d'au moins 0, emmm, cela semble absurde ? En fait, tant que le paragraphe entier n'est pas tronqué par un caractère de nouvelle ligne, vous pouvez obtenir la chaîne entière (plus une chaîne vide). re.DOTALL

Default:  ['我\t是Jasmine-F', '', 'eng. 我%的◉学号是No. 321432', '']DOTALL:  ['我\t是Jasmine-F\neng. 我%的◉学号是No. 321432', '']Process finished with exit code 0
re.S2.4,

(

).Notes sur les expressions régulières Python

correspond à la fin de la chaîne, .* correspond au début de la chaîne , par défaut Ci-dessous, si vous coupez une ligne, vous ne pouvez pas localiser le début/la fin de la nouvelle ligne, mais vous pouvez utiliser

pour la modifier, ce qui est le mode multi-ligne.

text = "我\t是Jasmine-F\neng. 我%的◉\n学号是No. 321432"pattern = r'.$'pattern2 = r'^.'print('Default, end: ', re.findall(pattern, text))print('MULTILINE, end: ', re.findall(pattern, text, re.M))print('Default, start: ', re.findall(pattern2, text))print('MULTILINE, start: ', re.findall(pattern2, text, re.M))
rrreere.MULTILINE2.5, re.M(re. Ajouter des commentaires à l'expression . Notez que vous l'ajoutez à , pas à

 ! Au début, je pensais pouvoir ajouter des commentaires à $, mais je n'ai pas pu obtenir le résultat après un long débogage. . . ^

Default, end:  ['2']MULTILINE, end:  ['F', '◉', '2']Default, start:  ['我']MULTILINE, start:  ['我', 'e', '学']Process finished with exit code 0
rrreere.M2.6. Superposition de modificateurs

re.VERBOSEUtilisez pour superposer des modifications.

text = '朋友们好啊!我是xxxxxx拳掌门人xxx~'pattern = r'''朋友们  # 主语
              好啊!  # 谓语
           '''print(re.findall(pattern, text,re.VERBOSE))
rrree

3. Fonction d'expression régulière patterntexttext3.1 Fonction pour trouver une seule correspondance

En fait, J'ai initialement écrit mon propre exemple, mais le navigateur l'a fermé par erreur et je ne l'ai pas enregistré (ma mentalité a immédiatement explosé)

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