Maison  >  Article  >  développement back-end  >  Introduction au module re et aux expressions régulières en python (avec code)

Introduction au module re et aux expressions régulières en python (avec code)

不言
不言avant
2019-02-20 14:27:322441parcourir

Cet article vous apporte une introduction au module re et aux expressions régulières en Python (avec code). Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

L'expression régulière (anglais : Regular Expression, souvent abrégée en regex, regexp ou RE dans le code), également connue sous le nom d'expression régulière, expression régulière, expression régulière, expression régulière, expression régulière, est un concept en informatique . Les expressions régulières utilisent une seule chaîne pour décrire et faire correspondre une série de chaînes correspondant à une certaine règle de syntaxe. Dans de nombreux éditeurs de texte, les expressions régulières sont souvent utilisées pour récupérer et remplacer du texte correspondant à un certain modèle.

Règles d'expression régulière, correspondance d'un seul caractère

字符 功能 正则表达式示例 符合匹配示例
. 匹配任意一个字符(除了n) b.b bab,b2b
[ ] 匹配来自[]中字符集的任意一个字符 i [abCde]m i am
d 匹配任何十进制数字,与[0-9]一致 wdcschool w3cschool
D 匹配非数字,即不是数字 mouDh mouth
s 匹配任何空格字符,与[ntrvf]相同 islike i like
S 匹配任何非空白字符,与s相反 nSe noe,n3e
w 匹配任何字母数字字符,与[A-Za-z0-9_]相同 [A-Za-z]w+
W 匹配非单词字符 [0-9]W[A-Z] 3 A

indique une correspondance de quantité

字符 功能 正则表达式示例 符合匹配的示例
* 匹配0次或者多次前面出现的正则表达式,即可有可无 a* aaa
+ 匹配前一个字符出现1次或者无限次,即至少有一次 a+ aaa
? 匹配前一个字符出现1次或者0次,要么有一次,要么没有 a? a或者b
{m} 匹配前一个字符出现m次 [0-9]{5} 12345
{m.} 匹配前一个字符至少出现m次 a{5.} aaaaa
{m,n} 匹配前一个字符出现从m到n次 a{2,6} aaa

indique une correspondance de limites

字符 功能 正则表达式示例
^ 匹配字符串起始部分 ^Dear
$ 匹配字符串终止部分 fi$
b 匹配任何单词的边界 bTheb
B 匹配非单词边界 .*Bver

groupe de correspondance

字符 功能
匹配左右任意一个表达式
(ab) 将括号中字符作为一个分组
num 引用分组num匹配到的字符串
(?P) 分组起别名
(?P=name) 引用别名为name分组匹配到的字符串

module re

En python, vous pouvez utiliser le module re intégré pour utiliser des expressions régulières

Fonctions et méthodes communes du module Re

核心函数 说明
compile(pattern,flags=0) 使用任何可选的标记来编译正则表达式的模式,然后返回一个正则表达式对象
re模块函数和正则表达式对象方法 说明
match(pattern,string,flags=0) 尝试使用带有可选的标记的正则表达式的模式来匹配字符串。如果匹配成功,就返回匹配对象; 如果失败,就返回 None
search(pattern,string,flags=0) 使用可选标记搜索字符串中第一次出现的正则表达式模式。 如果匹配成功,则返回匹配对象; 如果失败,则返回 None
findall(pattern,string,[,flags]) 查找字符串中所有出现的正则表达式,并返回一个列表
split(pattern,string,max=0) 根据正则表达式的模式分隔符,spilt函数将字符串分割为列表,然后返回成功匹配的列表,分割最多操作max次(默认分割所有匹配成功的位置)
sub(pattern,repl,string,count=0) 使用repl替换所有正则表达式的模式在字符串中出现的位置,除非定义count,否则就将替换所有出现的位置
常用的匹配对象方法 说明
group(num=0) 默认返回整个匹配对象或者返回编号为num的特定子组
groups(default=None) 返回一个包含所有匹配子组的元组,如果没有成功匹配,返回一个空元组
span()
常用的模块属性,大多数用于对正则表达式函数的修饰 说明
re.I 使匹配对大小写不敏感(忽略大小写)
re.S .(点号)匹配除了n之外的所有字符,re.S标记表示.(点号)能够匹配全部字符
re.M 多行匹配,影响^和$
re.U 根据Unicode字符集解析字符。影响w,W,b和B
re.X 该标志通过给予你更灵活的格式以便你讲正则表达式写得更易于理解

Utilisation générale du module re

  1. Utilisez la fonction compile() pour compiler la forme de chaîne d'une expression régulière en un objet d'expression régulière ;

  2. fait correspondre le texte via une série de méthodes fournies par l'objet d'expression régulière (telles que : match()) et obtient le résultat correspondant, un objet Match ; 🎜>

  3. Enfin, utilisez les propriétés et méthodes fournies par l'objet
  4. (par exemple :

    ) pour obtenir des informations et effectuer d'autres opérations si nécessaire. Matchgroup()

  5. Exemple d'utilisation du module re

Module d'importation

import re

Fonctioncompile()La fonction compile est utilisée pour compiler des expressions régulières et générer un objet Pattern. Sa forme d'utilisation générale est la suivante :

Après la compilation dans un objet d'expression régulière, vous pouvez utiliser l'expression régulière mentionnée ci-dessus. méthode.
import re

# 将正则表达式编译成pattern对象
pattern = re.compile(r'\d+')

méthode match()la méthode de correspondance est utilisée pour trouver la tête de la chaîne (la position de départ peut également être spécifiée), c'est une correspondance, tant que lorsqu'une correspondance est trouvée, les résultats sont renvoyés au lieu de rechercher tous les résultats correspondants. Sa forme d'utilisation générale est la suivante :
一次

où, string est la chaîne à faire correspondre, pos et endpos sont des paramètres facultatifs, spécifiant les positions
match(string[, pos[, endpos]])
et

de la chaîne, la valeur par défaut les valeurs sont respectivement 0 et 起始 (longueur de la chaîne). Par conséquent, lorsque vous ne spécifiez pas pos et endpos, la méthode match correspond par défaut au début de la chaîne. 终点lenLorsque la correspondance est réussie, un objet Match est renvoyé. S'il n'y a pas de correspondance, None est renvoyé.

>>> import re
>>> 
>>> pattern = re.compile(r'\d+') # 正则表达式表示匹配至少一个数字
>>> 
>>> m = pattern.match("one2three4") # match默认从开头开始匹配,开头是字母o,所以没有匹配成功
>>> print(m) # 匹配失败返回None
None
>>> 
>>> m = pattern.match("1two3four") # 开头字符是数字,匹配成功
>>> print(m)
<_sre.SRE_Match object; span=(0, 1), match=&#39;1&#39;>
>>> 
>>> m.group() # group()方法获取匹配成功的字符
'1'
>>> m = pattern.match("onetwo3four56",6,12) # 指定match从数字3开始查找,第一个是数字3,匹配成功
>>> print(m)
<_sre.SRE_Match object; span=(6, 7), match=&#39;3&#39;>
>>> m.group()
'3'

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