当前位置:网站首页>Re expression régulière
Re expression régulière
2022-04-23 17:59:00 【Nom Qgy】
reExpression régulière
Une expression régulière est une séquence spéciale de caractères,Peut aider l'utilisateur à vérifier si une chaîne correspond à un modèle,Pour obtenir une récupération ou un remplacement rapide d'un modèle、Texte de la règle.équivalent àWordFonctions de recherche et de remplacement dans.
import re
text='178,168,123456,9537,123456'
print(re.findall('123456',text))
#Out:
['123456', '123456']
1 Reconnaître les expressions régulières
Caractère régulier | Tracer Description |
---|---|
. | Division correspondante"\n"Tout caractère individuel autre que.La gamme la plus large.Pour correspondre, inclure’\n’N'importe quel caractère à l'intérieur,Disponible en’[.\n]'Mode |
\d | Correspond à un caractère numérique,Équivalent à[0-9] |
\D | Correspond à un caractère non numérique,Équivalent à[^0-9] |
\s | Correspond à n'importe quel caractère d'espace,Inclure des espaces、Tabulation、Sauts de page, etc,Équivalent à[\f\n\r\t\v] |
\S | Correspond à des caractères non blancs,Équivalent à[^\f\n\r\t\v] |
\w | Correspond aux caractères numériques de n'importe quel mot, y compris les soulignements,Équivalent à[A-Za-z0-9_] |
\W | Correspond à n'importe quel non - mot、Nombre、Caractère souligné,Équivalent à[^A-Za-z0-9_] |
Caractère régulier | Tracer Description |
---|---|
[Pp]ython | Ça correspondPythonOupython |
rub[ye] | Ça correspondrubyOurube |
[aeiou] | Correspond à l'une des lettres entre parenthèses |
[0-9] | Correspond à n'importe quel nombre,Équivalent à[0123456789] |
[a-z] | Correspond à n'importe quelle petite lettre |
[A-Z] | Correspond à n'importe quelle lettre majuscule |
[a-zA-Z0-9] | Correspond à n'importe quelle lettre et n'importe quel nombre |
[^aeiou] | Division correspondanteaeiou Tous les caractères sauf les lettres |
[^0-9] | Correspond à tous les caractères sauf les nombres |
import re
text='Taille:180,Poids corporel:130,Numéro d'étudiant:123456,Mot de passe:9537'
print(re.findall(r'\d',text))
print(re.findall(r'\S',text))
print(re.findall(r'\w',text))
print(re.findall(r'[1-5]',text))
print(re.findall(r'[ Poids élevé ]',text))
#Out:
['1', '7', '8', '1', '6', '8', '1', '2', '3', '4', '5', '6', '9', '5', '3', '7']
['Corps', 'Élevé', ':', '1', '7', '8', ',', 'Corps', 'Lourd', ':', '1', '6', '8', ',', 'Études', 'No.', ':', '1', '2', '3', '4', '5', '6', ',', 'Dense', 'Code', ':', '9', '5', '3', '7']
['Corps', 'Élevé', '1', '7', '8', 'Corps', 'Lourd', '1', '6', '8', 'Études', 'No.', '1', '2', '3', '4', '5', '6', 'Dense', 'Code', '9', '5', '3', '7']
['1', '1', '1', '2', '3', '4', '5', '5', '3']
['Élevé', 'Lourd']
Caractère régulier | Tracer Description |
---|---|
* | 0Ou plus |
+ | 1Ou plus |
? | 0Ou1- Oui. |
{2} | 2- Oui. |
{2,5} | 2-5- Oui. |
{2,} | Au moins2- Oui. |
{,5} | Tout au plus.5- Oui. |
text = "my telephone number is 15951817010,and my hometown's telephone \
number is 13863417300,my landline number is 0634-5608603."
print(re.findall(r'\d{4}-\d{7}(?# Numéro de téléphone )', text))
#Out:
['0634-5608603']
Exemple régulier de combinaison | Tracer Description |
---|---|
\d{6}[a-z]{6} | Deux sous - modèles s'assemblent pour former un grand modèle ,Ça correspond6Nombre plus6Petites lettres |
\d{6}|[a-z]{6} | Utilisez une ligne verticale pour indiquer qu'il y a une correspondance entre les deux modèles avant et arrière ,Ça correspond6Un nombre ou6Petites lettres |
(abc){3} | Groupes entre parenthèses , Les quantificateurs peuvent être appliqués en groupes après regroupement ,Ça correspondabcabcabc |
\X | CorrespondanceX Groupes correspondants |
(?#…) | Notes |
###\X
text="aabbcc ddfgkk oaddww aaaaaa ababcc"
print(re.findall(r'(\w{2})(\1)',text))
print(re.findall(r'(\w{2})(\1)(\2)',text))
#Out:
[('aa', 'aa'), ('ab', 'ab')]
[('aa', 'aa', 'aa')]
###(?#...)
text = "my telephone number is 15951817010,and my hometown's telephone \
number is 13863417300,my landline number is 0634-5608603."
print(re.findall(r'\d{4}-\d{7}(?# Numéro de téléphone )', text))
#Out:
['0634-5608603']
Caractère régulier | Tracer Description |
---|---|
^ | Correspond au début de la chaîne |
$ | Correspond à la fin de la chaîne |
\A | Début de la chaîne correspondante |
\Z | Fin de la chaîne de correspondance,S'il y a une nouvelle ligne, Ne correspond qu'à la chaîne de fin avant le saut de ligne |
\b | Correspond aux limites des mots, C'est la position entre le mot et l'espace .Par exemple:er\b Ça correspond.neverDanser,Mais ça ne correspond pas.verbDanser |
\B | Correspond à une limite non verbale.Par exemple:er\BÇa correspond.verbDanser,Mais ça ne correspond pas.neverDanser |
(?=…) | Le contenu correspondant est …Avant |
(?!..) | Le contenu correspondant n'est pas présent …Avant |
(?<=…) | Le contenu correspondant est …Après |
(?<!..) | Le contenu correspondant n'est pas présent …Après |
###(?=...)
text="height:180,weight:63,student_num:2020802178,key:hello_world"
print(re.findall(r'\w+(?=:2020802178)',text))
#Out:
['student_num']
###(?<=...)
print(re.findall(r'(?<=key:)\w+',text))
#Out:
['hello_world']
Le contenu des expressions régulières est vaste et profond , Vous pouvez d'abord saisir le cadre de base ,Savoir ce qu'il y a, Plongez plus profondément si nécessaire , Je pense que c'est apprendre de nouvelles connaissances 、 Une méthode d'apprentissage plus efficace pour apprendre de nouvelles choses . C'est comme apprendre un nouveau sujet , Il n'est pas nécessaire de mémoriser mot pour mot la bibliographie classique du sujet , Il suffit de maîtriser le contenu de base , Créer un réseau dans votre esprit , Quand vous avez besoin d'un endroit sur ce web, regardez - le attentivement .
2 reModule
pythonDereModule,Y compris:8Méthodes:
- re.search(): Trouver des caractères qui correspondent au modèle ,Renvoie seulement le premier,RetourMatchObjet
- re.match():EtsearchC'est pareil, Mais l'exigence doit correspondre au début de la chaîne ,RetourMatchObjet
- re.findall():Renvoie une liste de toutes les chaînes correspondantes
- re.finditer():Renvoie un Itérateur, Il contient toutes les correspondances ,C'est - à - direMatchObjet
- re.sub(): Remplacer la chaîne correspondante , Renvoie le texte complété par le remplacement
- re.subn(): Remplacer la chaîne correspondante , Renvoie le texte complété et le nombre de substitutions
- re.split(): Segmenter la chaîne originale en utilisant la chaîne de l'expression correspondante comme séparateur
- re.compile():Compiler une expression régulière en un objet,Facile à utiliser à l'arrière
Ci - dessus8 Les méthodes peuvent être divisées en 4Colonnes, Recherche respectivement ,Remplacer, Diviser et compiler .
2.1 Trouver,Oui.4Méthodes:search、match、findall、finditer
2.1.1 search - Retour seulement1- Oui.
import re
text = "abc,Abc,aBC,abc"
print(re.search(r'abc',text))
#Out:
<re.Match object; span=(0, 3), match='abc'>
search La méthode est de retourner un MatchObjet, Et une seule valeur est retournée ,span=(0,3) Ça veut dire qu'il correspond à 1-3Caractères,CommentMatch Où est la valeur correspondante dans l'objet ,Besoin d'utilisergroupMéthodes.
import re
text = "abc,Abc,aBC,abc"
m = re.search(r'abc', text)
print(m.group())
#Out:
abc
group Méthode la valeur de retour sans paramètre donné est le résultat d'une correspondance .
Si vous groupez les valeurs correspondantes ,Pour passer à traversgroup La méthode passe dans les paramètres du Groupe , Le résultat de la sortie est le résultat d'un certain nombre de correspondances .
text = "name:qgy,score:99;name:myt,score:98"
m = re.search(r'(name):(\w{3})',text)
print(m.group())
print(m.group(1))
print(m.group(2))
print(m.groups())
#Out:
name:qgy
name
qgy
('name', 'qgy')
Ajouter un point de connaissance ici , Ces quatre méthodes de recherche ont trois paramètres , La section précédente n'utilise que les deux premiers ,C'est ça.re.search()Exemple de méthode,
re.search(pattern,string,flags=0)
Premier paramètrepattern Est le modèle correspondant ,Deuxième paramètrestring Est la chaîne à correspondre ,flagsC'est un bit de drapeau,Utilisé pour contrôler la façon dont les expressions régulières correspondent,Par exemple::Sensible à la casse、Correspondance multiligne, etc.
text = "aBc,Abc,aBC,abc"
m = re.search(r'abc', text, flags=re.I)
print(m.group())
#Out:
aBc
Au - dessus du milieu régulier , Ce que je veux faire correspondre abc,textN'existe pasabc,Le résultat de la correspondance estaBc.
C'est - à - dire,re.I Est insensible à la casse .
Pour trouverflagsQu'est - ce que,On peut tenirctrl Cliquez sur le bouton dans votre script reLieu d'occurrence,Ça va sortir.re.pyDocumentation, Appuyez et maintenez sous le fichier ctrl+F, Boîte de recherche pop - up ,EntréeflagsVous pouvez voirflags Quels paramètres avez - vous? .
2.1.2 match - C'est juste un retour. 1- Oui., Mais ça correspond à partir de zéro.
text = "xaBc,Abc,aBC,abc"
m = re.match(r'abc', text, flags=re.I)
n = re.search(r'^abc',text,flags=re.I)
print(m)
print(n)
#Out:
None
None
Dans le code ci - dessus,Je vaisaBcAjouté avantx,UtilisermatchMéthodes,Ça correspondtextDébut du caractère, Si le caractère de départ ne correspond pas à l'expression régulière ,La correspondance échouera,Les résultats retournés sontNone.
re.match(r’‘,text) Équivalent à re.search(r’^',text)
Pour être honnête,matchÇa ne sert à rien.,Concevoir cecimatch Ça donne l'impression de peindre un serpent ,AvecsearchÇa suffit.
2.1.3 findall - Renvoie toutes les chaînes correspondantes
text = "name:qgy,score:99;name:myt,score:98"
m = re.findall(r'(name):(\w{3})',text)
print(m)
#Out:
[('name', 'qgy'), ('name', 'myt')]
findallLa méthode renvoie une liste, S'il y a des groupes lors de la correspondance , Chaque valeur de la liste sera utilisée avec ()Couvrez - le., Entre différents groupes ‘,’ Diviser.
2.1.4 finditer - RetourMatchItérateur
text = "name:qgy,score:99;name:myt,score:98"
m = re.finditer(r'(name):(\w{3})',text)
print(m)
for i in m:
print(i)
#Out:
<callable_iterator object at 0x00000224C3D5A460>
<re.Match object; span=(0, 8), match='name:qgy'>
<re.Match object; span=(18, 26), match='name:myt'>
finditer Oui renvoie un Itérateur , Qu'est - ce qu'un Itérateur? , Je n'en ai pas besoin non plus. , Je n'ai pas pris le temps de m'occuper de . Celui - ci a été porté avec un stylo de printemps et d'automne .
Fonction de recherche 4Parmi les méthodes,search、matchEtfinditerTout revient à unMatchObjet, Peut maîtriser les bases findallEtsearch, Trouve tout. findall, Trouve - en un. search.
2.2 Remplacer,Oui.2Méthodes:sub、subn
Les deux méthodes de remplacement ne diffèrent qu'une seule fois des quatre méthodes précédentes ,Plus de paramètres, C'est - à - dire que vous devez indiquer quels caractères vous voulez remplacer .
2.2.1 sub - C'est un mot anglais.substituteAbréviation anglaise de
text="abc,aBc,ABc,xyz,opq"
result=re.sub(r'abc','xyz',text,flags=re.I)
print(result)
#Out:
xyz,xyz,xyz,xyz,opq
2.2.2 subn - Une fois le remplacement terminé, dites - moi que quelques caractères ont été remplacés
text="abc,aBc,ABc,xyz,opq"
result=re.subn(r'abc','xyz',text,flags=re.I)
print(result)
#Out:
('xyz,xyz,xyz,xyz,opq', 3)
2.3 Diviser
split La méthode consiste à diviser une chaîne en petites chaînes selon certaines règles .
splitÀ quoi bon??Par exemple,, J'ai une séquence. , Je l'ai digérée avec une endonucléase de restriction , Couper la séquence originale en petits morceaux , Pour connaître la séquence des petits fragments après la coupe ,Pour passer à traverssplitComment réaliser.
MobI = "GATC"
text = "ATCGATCGGTTTAAGATCCTTCG"
result = re.split(MobI, text, flags=re.I)
print(result)
#Out:
['ATC', 'GGTTTAA', 'CTTCG']
2.4 Compiler
compile La méthode consiste à utiliser une expression régulière comme objet de communication , Passez l'objet dans une autre méthode et vous pouvez l'utiliser ,Fais - lesearch、findallAttendez un peu!.
Pourquoi une compilation? , L'avantage d'utiliser la méthode de compilation est d'augmenter l'efficacité , Si une expression régulière doit être réutilisée des milliers de fois , N'est - il pas très difficile d'entrer manuellement une fois chaque correspondance , Avec les résultats compilés , Appelé directement lorsqu'il est réutilisé .
re_telephone=re.compile(r'\d{4}-\d{3,8}')
text1="Xiao ming's telephone number is 0634-4854481"
text2="Xiao hone's telephone number is 0531-145488454"
text3="Xiao gang's telephone number is 0452-567188155"
print(re_telephone.search(text1).group())
print(re_telephone.search(text2).group())
print(re_telephone.search(text3).group())
#Out:
0634-4854481
0531-14548845
0452-56718815
版权声明
本文为[Nom Qgy]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/04/202204231757533626.html
边栏推荐
猜你喜欢
JS parsing and execution process
Random number generation of C #
Operators in C language
C1小笔记【任务训练篇一】
[appium] write scripts by designing Keyword Driven files
2022年广东省安全员A证第三批(主要负责人)特种作业证考试题库及在线模拟考试
Logic regression principle and code implementation
Cross domain settings of Chrome browser -- including new and old versions
编译原理 求first集 follow集 select集预测分析表 判断符号串是否符合文法定义(有源码!!!)
On the problem of V-IF display and hiding
随机推荐
Timestamp to formatted date
Classes and objects
JS forms the items with the same name in the array object into the same array according to the name
How to read literature
Leak detection and vacancy filling (VII)
re正则表达式
2022 Jiangxi energy storage technology exhibition, China Battery exhibition, power battery exhibition and fuel cell Exhibition
587. 安装栅栏 / 剑指 Offer II 014. 字符串中的变位词
Auto.js 自定义对话框
Go file operation
2022制冷与空调设备运行操作判断题及答案
Amount input box, used for recharge and withdrawal
Yolov4 pruning [with code]
Go的Gin框架学习
Notes on common basic usage of eigen Library
Leak detection and vacancy filling (VIII)
云原生虚拟化:基于 Kubevirt 构建边缘计算实例
油猴网站地址
JS parsing and execution process
The ultimate experience, the audio and video technology behind the tiktok