目录
re模块
re模块有什么用
从字符串(文本)里找出特定的东西
正则表达式的匹配过程
依次拿出表达式和文本中的字符比较,如果每一个字符都能匹配,则匹配成功,一旦有匹配不成功的字符则匹配失败
正则表达式的语法
- 一般字符:就是匹配自身
- . 匹配除换行符(\n)以外的任意字符
- [ ] 字符集,匹配字符集中的任意字符,可以是多个字符,或者是字符范围
- \d 匹配0-9的数字
- \D 匹配非数字
- \s 匹配空白字符(空格 \t\r\n\f\v)
- \S 匹配非空白字符
- \w 单词字符和数字
- \W 非单词字符和数字
- * 匹配前一个字符0次或无限次
- + 匹配前一个字符一次或无限次
- ? 匹配前一个字符0次或1次
- {m} 匹配前一个字符m次
- {m,n}匹配前一个字符m到n次
- ^ 匹配字符串开头,多行的话匹配每一行
- $ 匹配字符串结尾,多行的话匹配每一行
- \A 匹配字符串开头,仅匹配一次
- \Z 匹配字符串结尾,仅匹配一次
- | 表示匹配左右表达式任意一个
贪婪模式
a.*b 在目标字符串中找到第一个a到最后一个b,输出期间的所有内容
非贪婪模式
a.*?b 在目标字符串中找到第一个a到第一个b,输出期间的所有内容
compile通用规则模板
res1 = re.compile('\d+')
res2 = re.compile('\w+')
res3 = re.compile('\s+')
result1 = res1.findall(s)
result2 = res2.findall(s)
result3 = res3.findall(s)
match和search
mathch从开头开始匹配找一个,search搜索所有找第一个
re.split()
就是字符串的split方法,区别是可以使用正则表达式去替换
sub和subn
他们两都是替换内容,但是subn会计算替换了多少次,类似于字符串的replace内置方法