Python is Best

Python正则表达式——Re模块

2017-11-06  本文已影响5人  So_ProbuING

正则表达式

字符匹配

普通字符:大多数字符和字母都会和自身匹配
元字符:.^$*+?{}[]|()\

re模块

re是python中的正则表达式模块,re模块中包含了正则表达式的语法

API方法

rep = re.search('aaa','aaacccaaa')
print(rep.group())

元字符解释

re.findall('a*','aaaabbbb')
pre(m) m个连续的pre
pre(m,n) m到n个连续的pre,尽可能多地匹配
pre(m,n)? m到n个连续的pre,尽可能少的匹配

expr1|expr2 匹配expr1或expr2
[a-z] 表示a-z范围中的任意一个字母

Python使用正则表达式

使用正则表达式,相关的功能都位于标准库模块re中。需要先定义一个用于匹配的模式字符串以及一个匹配的对象:源字符串

result = re.match('You','Youareme')

对于更加复杂的匹配,可以先对模式进行编译以加快匹配速度,然后就可以直接使用编译好的模式进行匹配

>>> youpattern = re.compile('You')
>>> youpattern.match('You are mine')
<_sre.SRE_Match object; span=(0, 3), match='You'>

使用match()进行准确匹配

判断单词'Young'是以单词'You'开头

>>> source = 'Young'
>>> m = re.match('You',source)
>>> if m:
...     print(m.group())
... 
You
>>> mm = re.search('ung',source)
>>> if mm:
...     print(mm.group())
... 
ung

使用findall()寻找所有匹配

findall()会返回指定的模式串在源串中出现的所有列表

>>> source_all = 'hello hello hello how are you'
>>> m = re.find
>>> m = re.findall('o',source_all)
>>> m
['o', 'o', 'o', 'o', 'o']

使用split() 按匹配切分

split()将一个字符串切分成由一系列子串组成的列表

>>> m = re.split('l',source_all)
>>> m
['he', '', 'o he', '', 'o he', '', 'o how are you']

使用sub()替换匹配

使用sub替换匹配和字符串的replace有些类似,只不过使用的是模式而不是文本串

>>> m = re.sub('l','?',source_all)
>>> m
'he??o he??o he??o how are you'

定义模式匹配的输出

当使用match()或search()时,所有的匹配会以m.group()的形式返回到对象m中。如果使用括号将自己的某一模式包裹起来,括号中模式匹配得到的结果归入自己的froup中,如果调用m.groups()可以得到包含这些匹配的元组,使用(? P <name> expr) 这样的模式会匹配expr,并将匹配结果存储到名为name的组中

上一篇 下一篇

猜你喜欢

热点阅读