1、导入模块
import re
match方法是从起始位置开始匹配
ret = re.match(r"正则表达式", "匹配的字符")
匹配上则有返回值,返回一个对象,匹配不上则没返回
ret.group()
取到匹配到的数据
2、匹配单个字符:
1、匹配任意数字 \d \D 匹配非字符
2、匹配任意一个 [] 连续可以写成[1-8] 两段连续可以写成[1-36-9]1到3,6到9 也可以写成[1-3a-e]
3、\w 匹配任意单词字符,除过=-等等,慎用,范围太广 \W 匹配非单词字符
4、\s 匹配一个空格 \S匹配非空格
5、.匹配任意一个字符 除了\n 加参数re.S则可以匹配\n
3、匹配多个字符
1、{}匹配前一个字符出现的次数 \d{1,3} 表示数字位数可以有1到3位 \d{11}表示只能有11位 a{1} a只能出现一次
2、?匹配前一个字符出现一次或者没有出现 要么有要么没有
3、*匹配前一个字符可以出现0次,1次,多次,可有可无
4、+匹配前一个字符至少出现一次或者多次,至少有一次
4、匹配开头结尾
1、^匹配字符串开头
2、$匹配字符串结尾
5、匹配分组
1、| 匹配左右任意一个表达式
2、()将括号中的字符作为一个分组 需要取值的时候可以用group(1) 第一个括号是1,以此类推
如需要第一个括号中的值与其相当可以写成:
re.match("<(\w*)>.*</\1>", <h1>hahahha</h1>)
6、匹配出文章阅读的次数
re.search(r"\d+", "阅读次数为9999")。group()
"9999" 只能取到第一个匹配的数值
re.findall(r"\d+", "python=199, java=433, js=3333")
直接返回一个数组 [199, 433, 3333]
7、将匹配到的字符进行替换
re.sub(r"\d+" "988", "python = 997 java = 1002 ")
直接返回被替换后的数据 全部替换 “python = 998 java = 998”
def add(temp):
strNum = temp.group()
num = int(strNum) +1
return str(num)
ret = re.sub(r"\d+", add, "点击次数为997次")
print(ret)
结果 点击次数为998次
8、split根据匹配进行切割字符串
ret = re.split(r":| ", "info:xiaozhang 33 shandong")
print(ret)
结果:["info", "xiaozhang", "33", "shandong"]