Maison > développement back-end > Tutoriel Python > Comment implémenter une correspondance superposée avec des expressions régulières Python

Comment implémenter une correspondance superposée avec des expressions régulières Python

WBOY
Libérer: 2022-07-25 17:20:44
avant
3252 Les gens l'ont consulté

Cet article vous apporte des connaissances pertinentes sur Python. Il présente principalement comment les expressions régulières Python implémentent la correspondance qui se chevauche. Examinons-le ensemble, j'espère qu'il sera utile à tout le monde.

Comment implémenter une correspondance superposée avec des expressions régulières Python

【Recommandation associée : Tutoriel vidéo Python3

Expression régulière pour implémenter une correspondance qui se chevauche

import regex
string = '100101010001'
str_re = '101'
print(regex.findall(str_re, string, overlapped=True))
Copier après la connexion

La correspondance de bibliothèques ordinaires ne peut correspondre qu'à un seul '101'.

Expressions régulières et correspondances régulières

Expressions régulières

Les expressions régulières peuvent être comprises comme des expressions permettant de filtrer des données, qui sont composées d'un nombre limité d'atomes et de métacaractères.

Atomes : Unité de base, chaque expression a au moins un atome

S : L'opposé de s
#普通字符组成原子
pat1 = "abcd"
 
#非打印字符组成原子
pat2 = "\n"
 
#通用字符做原子
pat3 = "\w"
 
#原子表组成原子
pat4 = "py[abc]"
#可以匹配pya,pyb,pyc,但匹配pyab等原子表重复出现的情况失败
 
#原子表开头带 ^ 表示取反
pat5 = "py[^abc]"
#第三个位置匹配除了a,b,c外的任意一个字符
Copier après la connexion
Métacaractères : ^
Les caractères ordinaires constituent les atomes

Les caractères non imprimables constituent les atomes

(caractères qui ne sont pas imprimés sur le station de sortie)

n Nombre

D : L'opposé de d

s : Correspond à tous les caractères d'espacement, tels que les espaces, les nouvelles lignes, les retraits

Les tables atomiques constituent les atomes

Un groupe d'atomes constitue un tableau, déclaré par []

Les priorités des atomes dans le tableau sont égales, mais le contenu n'apparaît que dans l'ordre

Si le tableau des atomes commence par ^, cela signifie négation

ont des significations particulières dans les expressions régulières. Les caractères

.

correspondent à n'importe quel caractère, à l'exception du caractère de nouvelle ligne

correspond à la position de départ de la chaîne

$ correspond à la position de fin de la chaîne, lorsqu'il y a plusieurs ensembles de correspondances Lors de la correspondance, renvoie le dernier groupe de correspondances dans la chaîne * correspond aux atomes précédents 0, 1, n fois [Greedy mode : correspond autant de fois que possible] ? correspond à 0, 1 fois L'atome précédent [Mode paresseux : correspondance exacte] + correspond à 1, n fois l'atome précédent { j }L'atome précédent apparaît j fois { j , } L'atome précédent apparaît au moins j fois { j , k }L'atome précédent apparaît au moins j fois et à la plupart des k fois i | j correspond à i ou j, si i et j apparaissent en même temps, correspondent au groupe i( ), limitez la combinaison de ce groupe de données comme décrit dans (), et ne renvoie que le contenu qui correspond à la description entre parenthèses Le modificateur de motif re.IIgnorer la casse lors de la correspondance
est dans la fonction Le paramètre à la position du drapeau change de signification sans changer l'expression régulière et ajuste le résultat correspondant.

re.MCorrespondance multiligne

re.LCorrespondance de reconnaissance de localisationre.U Basé sur correspondance de caractères unicon, affectant w La correspondance Wre.S inclut les caractères de nouvelle ligne L'expression régulière est une correspondance floue sur une chaîne, dont l'une est appliquée comme match régulier. La correspondance régulière est une technologie utilisée par les robots d'exploration Python pour extraire des informations cibles à partir des informations textuelles analysées.
Correspondance régulière
Fonctions couramment utilisées pour la correspondance régulière : (appelez le module d'expression régulière re)
re.search(pat, str[, flag]) : scannez la chaîne str et renvoie la position de pat (La première correspondance réussie), flag est utilisé pour contrôler la méthode de correspondance des expressions régulières

import re
str = 'python'
pat = 'pytho[a-n]'
print(re.search(pat, str))
Copier après la connexion
re.match(pat, str[, flag]) : scannez le début du string str Position, renvoie la position de pat (la première correspondance réussie), le flag est utilisé pour contrôler la méthode de correspondance des expressions régulières [S'il ne correspond pas au début, il se terminera et n'en renverra aucun]
import re
str_1 = 'hello world'
str_2 = 'world hello'
pat = 'world'
print(re.match(pat, str_1))
print(re.match(pat, str_2))
Copier après la connexion

< code>re.complie(pat [, flag]) : Compilez l'expression régulière pat et renvoyez l'objet d'expression régulière

findall(str[, pos[, endpos]]) : Faire correspondre tout et renvoyer la chaîne sous forme de liste Pour toutes les sous-chaînes correspondantes [pas seulement la première fois], pos et endpos peuvent spécifier la position de départ dans la chaînere.complie(pat).findall(str)</code > : fonction de correspondance globale, fait correspondre toutes les sous-chaînes de str qui correspondent à pat, charge une liste et renvoie le résultat</p><ul><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:py;">import re str = &quot;hello world hello world hello world&quot; pat = &quot;hello&quot; print(re.complie(pat).findall(str)) print(re.complie(pat).findall(str, 5, 15))</pre><div class="contentsignin">Copier après la connexion</div></div><li><code>re.search(pat, str[, flag]):扫描字符串str,返回pat的位置(第一次成功匹配的),flag用于控制正则表达式的匹配方式

import re
str = "400-823-823"
pat = "-"
#短横改空格,最大替换次数2
str_new = re.sub(pat, " ", str, count=2)
Copier après la connexion
  • re.match(pat, str[, flag]):扫描字符串str开始的位置,返回pat的位置(第一次成功匹配的),flag用于控制正则表达式的匹配方式【若开始就不符合则结束,返回none】
rrreee
  • re.complie(pat[, flag]):编译正则表达式pat,返回正则表达式对象
  • findall(str[, pos[, endpos]]):匹配所有,用列表返回string中所有匹配到的子串【不止第一次】,pos和endpos可指定在string中的起始位置
  • re.complie(pat).findall(str):全局匹配函数,匹配str中所有符合pat的子串,装入一个列表返回结果
rrreee
  • re.sub(pat, repl, str[, count[, flag]])re.sub(pat, repl, str[, count[, flag]]) code> : Remplacer les caractères Correspondances dans la chaîne [données propres], vous pouvez utiliser count pour spécifier le nombre maximum de remplacements
rrreee

[Recommandations associées : Tutoriel vidéo Python3]

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!

Étiquettes associées:
source:jb51.net
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal