一. 概述
正则表达式是一种规则,用来匹配你想要的字符串,或者检测是否是你想要的字符串,数据清洗等。
二. re模块
{}:匹配的个数 []:匹配的内容 ():目标组 \d:匹配数字 \w: 匹配字母 \s:匹配空格 .:除了换行以外的任意字符 *:匹配任意多个,有或者没有或者有多个 +:匹配至少一个或更过个 ?:要么0要么1 {m}:出现m次 {m,n}:匹配m-n次 ^:匹配开头 $:匹配结尾 |:匹配or的时候用 分组用:()括起来 分组从1开始索引
实列:
#coding:utf-8
import re
def main():
#1.匹配电话号码
s = "021-12345678"
res = re.match(r"\d{3,4}-?\d{7,8}",s)
print(res.group())
#匹配池163邮箱地址:@符号之前有4-20位字母数字下划线
d = ["hello@163.com","1111@163.com","a11a@163.com","a11a@126.com"]
for i in d:
res = re.match(r"[a-zA-Z_0-9]{4,20}@(163|126).com$",i)
if res:
print("匹配成功,%s"%i)
else:
print("匹配失败,%s"%i)
#匹配标签
s = "<body><h1>hahahha</h1></body>"
#res = re.match(r'<(\w*)>.*</\1>',s)
#?P<name>起别名name
res = re.match(r'<(?P<p1>\w*)><(?P<p2>\w*)>.*</(?P=p2)></(?P=p1)>', s)
print(res.group())
if __name__ == '__main__':
main()
sub:替换 re.sub(r"","要替换的东西","匹配的字符串"),"要替换的东西"可以放一个函数, search:查找 findall:直接返回列表不用group() split:切割 re.split(r":| ","sdshd:shdsjdh skkk jjj kkk") 用冒号或空格切割