当前位置:网站首页>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
边栏推荐
- C# 网络相关操作
- C [file operation] read TXT text by line
- Leak detection and vacancy filling (VIII)
- 2022 Shanghai safety officer C certificate operation certificate examination question bank and simulation examination
- 2022 Jiangxi Photovoltaic Exhibition, China Distributed Photovoltaic Exhibition, Nanchang Solar Energy Utilization Exhibition
- Write a regular
- ES6
- On the method of outputting the complete name of typeID from GCC
- Transfer learning of five categories of pictures based on VGg
- YOLOv4剪枝【附代码】
猜你喜欢
Clion installation tutorial
开源按键组件Multi_Button的使用,含测试工程
C network related operations
[UDS unified diagnostic service] IV. typical diagnostic service (4) - online programming function unit (0x34-0x38)
.104History
2022年茶艺师(初级)考试模拟100题及模拟考试
Go语言JSON包使用
String function in MySQL
Gaode map search, drag and drop query address
YOLOv4剪枝【附代码】
随机推荐
Classification of cifar100 data set based on convolutional neural network
【Appium】通过设计关键字驱动文件来编写脚本
Go language JSON package usage
列錶的使用-增删改查
Oil monkey website address
2022年广东省安全员A证第三批(主要负责人)特种作业证考试题库及在线模拟考试
In JS, t, = > Analysis of
MySQL 中的字符串函数
油猴网站地址
Realsense selection comparison d455 d435i d415 t265 3D hardware comparison
The JS timestamp of wechat applet is converted to / 1000 seconds. After six hours and one day, this Friday option calculates the time
Leak detection and vacancy filling (VII)
C byte array (byte []) and string are converted to each other
Gets the time range of the current week
C1 notes [task training part 2]
The ultimate experience, the audio and video technology behind the tiktok
[UDS unified diagnostic service] IV. typical diagnostic service (6) - input / output control unit (0x2F)
C language array processing batch data
编译原理 求first集 follow集 select集预测分析表 判断符号串是否符合文法定义(有源码!!!)
Halo open source project learning (II): entity classes and data tables