Python正则表达式

  1. 一般形式
import re
# 在helloworld中匹配hello
# 返回匹配的obj对象
obj = re.match('hello','hello world')
# 获取匹配结果 group(n)获取第n+1组所匹配的子串
pro = obj.group()
print(pro)

  1. 匹配单个字符
# . 任意单个字符
# [] 匹配[]中的字符
# \d 匹配数字
# \D 匹配非数字
# \s 匹配空白,\t
# \S 匹配非空白
# \w 匹配非特殊字 A-Z,a-z,0-9,'_',汉字
# \W 匹配特殊字符 非A-Z,a-z,0-9,'_',汉字

import re
# 任意0-9的数字都会被匹配
obj = re.match('[0-9]','q')
if obj:
    pro = obj.group()
    print(pro)
else:
    print('匹配失败')

  1. 匹配多个字符
# * 匹配前一个字符0-无限次
# + 匹配前一个字符1-无限次
# ? 匹配前一个字符0或1
# {m} 匹配前一个字符m次
# {m,n} 匹配前一个字符m到n次
# {m,} 匹配前一个字符至少m次

import re
# 开头是h,结尾是p,中间任意多字符
obj = re.match('h.*p','hsidajsoidnaocp')
pro = obj.group()
print(pro)

  1. 匹配开头和结尾
import re
# 匹配开头和结尾是数字
# obj = re.match('^\d.*\d$','1dasdwqdqwda3')
# pro = obj.group()
# print(pro)

# [^字符] 表示除[]字符以外的都匹配
# 不含123任何数字的字符匹配
obj = re.match('[^123]+','456')
pro = obj.group()
print(pro)

  1. 分组匹配
import re
# a|b 表示出现a或b都可以匹配
fruit = ['apple','banana','orange','peach']
for value in fruit:
    obj = re.match('apple|peach|banana',value)
    if obj:
        pro = obj.group()
        print('I love',pro)
    else:
        print('I don`t love',value)
import re
# :后非0开头的5-11位数字
obj = re.match('(qq):([^0]\d{5,11})','qq:123456709')
pro0 = obj.group(0)
print(pro0)
pro1 = obj.group(1)
print(pro1)
pro2 = obj.group(2)
print(pro2)

import re
# <>内为非特殊字符且前后一样,中间任意字符
obj = re.match('<(\w+)>.*</\\1>','<html>曹操</html>')
pro = obj.group()
print(pro)
import re
# 标签分组
obj = re.match('<(?P<name1>\w+)><(?P<name2>\w+)>.*</(?P=name2)></(?P=name1)>','<html><p>孙悟空</p></html>')
pro = obj.group()
print(obj)

  1. 匹配含有特性字符的
import re
# \.将.变为普通的. 而不是匹配任意一个字符
obj = re.match('\w{4,20}@(163|126|qq)\.com','hello@163.com')
pro = obj.group()
print(pro)
posted @ 2021-03-10 16:21  code-G  阅读(58)  评论(0编辑  收藏  举报