使⽤正则表达式匹配
Python语⾔及其应⽤
7.1.3使⽤正则表达式匹配
正则表达式使⽤:⾸先需要定义⼀个⽤于匹配的模式(pattern)字符串和⼀个匹配的对象:源(source)字符串,如下,Result = re.match(‘’You,’Young France’)
这⾥的 “You”是模式,“Young France”是源——你想检查的字符串。函数⽤于查看源是否以模式开头。
以下列出⼏种匹配⽅法,
match( )以某某开头作精准匹配,
search( )会返回第⼀次成功匹配,如果存在的话
findall( )会返回所有不重叠的匹配,如果存在的话
split( )会根据pattern将source切分成若⼲段,返回由这些⽚段组成的列表
sub( )还需要⼀个额外的参数repacement,他会把source中所有匹配pattern给出replacement
1、使⽤match( )进⾏精准匹配
[root@promethus te]# python
Python 3.6.3 |Anaconda, Inc.| (default, Oct 13 2017, 12:02:49)
[GCC 7.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import re
>>> aaa = 'Young FranceYou'
>>> m = re.match('You', aaa)
>>> print(m)
<_sre.SRE_Match object; span=(0, 3), match='You'>
>>> up())
You
>>> n = re.match('.*Fran', aaa)
>>> print (n)
<_sre.SRE_Match object; span=(0, 10), match='Young Fran'>
>>> print (n.group())
Young Fran
>>>
以下对新模式能够匹配成功的解释:
.代表任何单⼀字符;
*代表任意⼀个它之前的字符,.*代表任意多个字符(包括0个)
2、使⽤search( )寻⾸次匹配
使⽤search('Frank', aaa)查任意位置的“Frank”或“Fran”,⽆需通配符。
3、使⽤findall( )寻所有匹配
结合.*?匹配规则进⾏。
4、使⽤split ( )按匹配切分
将⼀个字符串切分成由⼀系列的⼦串组成的列表
5、使⽤sub ( )替换匹配
6、模式:特殊字符归类
模式匹配
\d    ⼀个数字字符
\D    ⼀个⾮数字字符
\w    ⼀个字母或数字字符
\W    ⼀个⾮字母⾮数字字符
\s    空⽩符
\S    ⾮空⽩符
\b    单词边界(⼀个\w与\W之间的范围,顺序可逆)
\B    ⾮单词边界
验证操作
7、模式:使⽤标识符
模式匹配
abc    ⽂本值abc
.        除\n外的任何字符
^        源字符串的开头
$        源字符串的结尾
prev?      0个或1个prev
prev*      0个或多个prev,尽可能多的匹配
prev*?    0个或多个prev,尽可能少的匹配
prev+      1个或多个prev,尽可能多的匹配
prev+?    1个或多个prev,尽可能少的匹配
prev{m}      m个连续的prev
prev{m,n}    m到n个连续的prev,尽可能多的匹配
prev{m,n}    m到n个连续的prev,尽可能少的匹配
[abc]        a或b或c,跟[a|b|c]⼀样
[^abc]        ⾮(a或b或c)
prev(?=next)      如果后⾯为next,返回prev
prev(?!next)      如果后⾯为⾮next,返回prev
(?<=prev)next      如果前⾯为prev,返回next
(?<!prev)next      如果前⾯为⾮prev,返回next
⽰例
>>> sour = '''I wish I may, I wish I might
... Have a dish of fish toight.'''
>>> re.findall('wish', sour)
['wish', 'wish']
8、模式:定义匹配的输出
当使⽤时match( )或search( )时,所有的匹配会以的形式返回对象m.group()中,如果你⽤括号将某⼀个模式包裹起来,括号中模式匹配得到的结果归⾃⼰的group中,⽽调⽤m.groups()可以得到包含这些匹配的元祖,如下,
>>> import re
正则匹配多个>>> sour = '''I wish I may, I wish I might
... Have a dish of fish toight.'''
>>> m = re.search(r'(?P<DISH>. dish\b).*(?P<FISH>\bfish)', sour)
>>> m.group()
⾃此,完成正则匹配基本功能。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。