Python正则
正则表达式
正则表达式用于搜索,替换和解析字符串,python中提供了re模块实现正则表达式
\d: 匹配任何十进制数,相当于[0-9]
\D: 匹配任何非数字字符,相当于[^0-9]
\s: 匹配任何空白字符
\S: 匹配任何非空白字符
\w: 匹配任何字母数字字符,相当于[a-zA-Z0-9]
\W:匹配任何非字母数字字符,相当于[^a-zA-Z0-9]
^ : 行起始标记
$ : 行尾标记
. : 匹配任意一个字符
[] 匹配包含在[字符]之中的任意字符
[^] 匹配包含在[^字符]之外的任意字符
? 匹配之前项的一次或0次
+ 匹配之前项的1次或多次
* 匹配之前项的0次或多次
re模块
python的re模块具有正则表达式 ,re模块提供了一个根据正则表达式进行查找,替换,分隔字符的函数
re常用函数
1. 匹配类函数
re模块findall函数,该函数在字符串中查找模式匹配,将所有的匹配以列表形式返回
re模块的一些函数都有一个flags参数,用于设置匹配的附加选项,例如,是否忽略大小写,是否支持多行匹配
I 忽略大小写
M 多行匹配
实例:
>>> import re
>>> s = "HELLO WORLD"
>>> print(re.findall())
KeyboardInterrupt
>>> re.findall(r"^hello",s)
[]
>>> re.findall(r"^hello",s,re.I) #re.I 表示忽略大小写
['HELLO']
>>> re.findall(r"WORLD$",s)
['WORLD']
>>> re.findall(r"world$",s,re.I)
['WORLD']
>>> re.findall(r"world$",s,re.I)
['WORLD']
match()方法
返回一个对象,只匹配开始的位置
>>> m = re.match(r'(\w+)\s','hello word') ##(\w+)一个括号表示一组
>>> m.group(0)
'hello '
>>> m.group(1)
'hello'
>>> m = re.match(r'\w+\s','ab hello word')
>>> m.group(0)
'ab '
>>> m = re.match(r'(hello)\s','ab hello word') #因为match只匹配开头,所以导致hello没有匹配到
>>> m
>>> m = re.match(r'(hello)\s','hello word')
>>> m.group(0)
'hello '
sub()方法 替换字符串
>>> s = "hello world"
>>> re.sub("hello","hi",s) #将hello替换成hi
'hi world'
>>> re.sub("world","china",s[-5:]) ##在分片[-5:]范围内替换"world", 把字符串world替换成china
'china'
** sub()先创建变量s的拷贝,然后在拷贝中替换字符串,不会改变原变量s的内容