为什么引入正则表达式?:正则表达式可查找一类的字符串
正则表达式:
单字符匹配:
\d匹配所有的数字字符
\D 匹配除数字字符以外的其他所有的字符
\s匹配所有的空白字符;比如\t 空格等
\S 匹配除空白字符以外的其他所有的字符
\w 匹配数字、字母大小写、下划线和中文
\W匹配除了\w以外的的字符
. 除了换行符以外的所有字符
[ ] 匹配括号中的任意一个
数量装饰
{5} 装饰前面的一个字符出现五次
{5,} 装饰前面的一个字符至少出现五次
{5,8} 装饰前面的一个字符至少5次,最多八次
{0,} 任意多次 也可以用*表示
{1,} 至少一次 也可以用+表示
{0,1}可有可无 也可以用?表示
延伸:.*:任意装饰 .+:至少一次
边界修饰
^ 以XX开头
$ 以XX结尾
分组修饰
():
1>:视为一个整体
2>:子模式
贪婪:
.*?:取消贪婪
.+?:取消贪婪
模式修正
re.I:忽略大小写
pattern = re.compile(r'love',re.I)
string = 'LOVE is a best feel'
ret = pattern.search(string) print(ret.group())
re.S:视为单行模式
string = '''
沁园春-雪 北国风光,千里冰封,
万里雪飘 望长城内外,惟余莽莽
'''
pattern = re.compile(r'
(.*?)',re.S)ret = pattern.search(string) print(ret.group(1))
re.M:视为多行模式
string = '''
刘德华
love 马德华
love 牛德华
'''
pattern = re.compile(r'^love',re.M)
ret = pattern.search(string) print(ret.group)
查找的三种方法:
re.match():从字符串的开头开始比配,如果匹配成功直接返回,返回一个对象
re.findall():匹配所有,返回一个列表
re.search():从字符串的任意位置开始匹配,如果匹配成功,直接返回
ret.group():整个正则匹配的内容
ret.group(1):第一个子模式匹配的内容
ret.group(2):第二个子模式匹配的内容
ret.findall():如果需要整个正则匹配的内容,需要将整个正则用小括号括起来
正则替换
.sub('替换的值',替换的字段)
网友评论