python中的正则表达式
一,定义
正则表达式又称规则表达式,是计算机科学的一个概念,通常用来检索和符合某些规则的文本,现在已经在各种计算机语言中得到广泛应用。
二,内容
1,行定位符
作用:用来描述字符串的边界。
符号:^与
分
别
表
示
行
的
开
始
与
结
尾
。
用
法
:
字
符
串
与
分别表示行的开始与结尾。 用法:^字符串与
分别表示行的开始与结尾。用法:字符串与字符串。
2,元字符
行定位符也是元字符,除此之外,还有以下几个元字符。
符号:"." 匹配除换行符以外的任何字符。
符号:\w 匹配字母,数字,下划线,汉字。
符号:\s 匹配任意的空白符。
符号:\d 匹配数字。
符号:\b 匹配单词的开始或结束。
3,重复
正则表达式提供了限定符,用与匹配特定数量的字符。
符号:? 匹配前面的字符零次或一次。
符号:+ 匹配前面的字符一次或多次。
符号:* 匹配前面的字符零次或多次。
符号:{n} 匹配前面的字符n次。
符号:{n,}匹配前面的字符至少n次。
符号:{n,m} 匹配前面的字符至少n次,最多m次。
4,字符类
用于匹配没有预定义元字符的字符集合。
方法:使用"[]"。
比如:[0-9]与\d的作用一样,都是匹配一个数字。
解读:匹配方括号里的任意一个字符。
5,排除字符
用于匹配不符合指定字符集合的字符串。
方法:[^指定字符串]
6,选择字符
符号:| 表示“或”。
7,转义字符
正则表达式中的\与python中的大同小异,都是将特殊字符如(,?)等变为普通的字符。
方法: \特殊字符。
8,分组
方法:使用小括号进行分组。
比如:the(m|y) 表示匹配them或they。
三,在python中的使用
在python中将正则表达式当作模式字符串来使用。
比如:’\bm\w*\b’ 表示匹配以m开头的单词,但是若要其变为模式字符串,则\需要进行转义。模式字符串:’\bm\w*\b’,这种太过繁琐,所以,我们在原生字符串(正则表达式)前加上r或R可以直接表示为模式字符串,比如:r’\bm\w*\b’。
四,使用re模板实现正则表达式操作
1,匹配字符串
方法一,使用match()
re.match(pattern,string,[flags])
patter:模式字符串
string:需要匹配的字符串对象
flags:标志位,用于控制匹配方式
标志位:
A 表示只进行Ascll匹配
I 表示不区分大小写的匹配
X 表示忽略模式字符串中未转义的空格与注释。
例如:
import re
pattern=r'mr_\w*'
string='mr_shop,Mr_shop'
match=re.match(pattern,string)
print(match)
结果:
方法二,使用search()
作用:在整个字符串的中搜索第一个匹配的值,成功返回结果,失败则返回none。
re.rearch(pattern,string,[flags])
pattern与string,flags都与match()相同。
import re
pattern=r'mr_\w*'
string='lr_shop Mr_shop'
match=re.search(pattern,string)
print(match)
结果:
方法三,使用findall()
在整个字符串中寻找所有符合的字符串,并以列表的形式返回,若没有符合的字符串,则返回空列表。
re.findall(pattern,string,[flags])
pattern与string与flags与前两者都相同。
import re
pattern=r'mr_\w*'
string='mr_shop1,Mr_shop'
match=re.findall(pattern,string,re.I)
print(match)
结果:
2,替换字符串
使用sub()函数
re.sub(pattern,repl,string,[count],[flags])
pattern:模式字符串
repl:要替换的新字符串
string:被替换的原始字符串
count:替换的最大次数
flags:标志位
import re
pattern=r'mr_\w*'
string='mr_shop1,Mr_shop'
result=re.sub(pattern,'boss',string)
print(result)
结果:
3,分割字符串
使用split()函数分隔字符串,并以列表的形式返回。
re.split(pattern,string,[maxsplit],[flags])
maxsplit:最大的拆分次数。
import re
pattern=r'mr'
string='mr_shop1,Mr_shop'
result=re.split(pattern,string,re.I)
print(result)
结果: