python 正则表达式

137 阅读1分钟

一. 概述

正则表达式是一种规则,用来匹配你想要的字符串,或者检测是否是你想要的字符串,数据清洗等。

二. 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") 用冒号或空格切割