关于正则匹配的个人整理

match进行匹配

import re

# match方法进行匹配,从头开始匹配。match这个函数如果成功匹配,返回的就是一个对象,如果匹配不到数据,返回的就是None
result = re.match('python','python is good')
print(result)

# group这个方法用来提取匹配到的数据
print(result.group())

注意点:
1、match从头匹配

字符

.单个任意字符

result = re.match('.','bcd')
print(result.group())

[]匹配列举字符中的任何一位

result = re.match('[pP]','Python')
print(result.group())

\d 匹配数字

# re1 = re.match('[0123456789]','123python')
# re1 = re.match('[0-9]','923python')
re1 = re.match('\d','923python')

\D 匹配的是非数字

re1 = re.match('\D','@923python')

\w 匹配的是a-z A-Z 0-9 _

re1 = re.match('[a-zA-Z_0-9]','123_aASD923python')
re1 = re.match('\w','asd_123_aASD923python')

\W 匹配的非单词字符

匹配指定的字符个数

* 代表的是可有可无,代表的是0次或者无数次

str1 = 'Qwe'
re1 = re.match('[A-Z][a-z]*',str1)

+ 代表的是至少有一位

# 匹配变量名是否生效
str1 = '_name123_asd'
re1 =re.match('[a-zA-Z_]+[\w]*',str1)

写在?前面匹配的字符出现一次或者0次

#匹配0-99之间的数字
re1 = re.match('[1-9]?[0-9]','988')

{}的匹配具体的位数

类型说明
{m}匹配一个字符出现m次
{m,}匹配的是一个字符至少出现m次
{m,n}匹配字符出现的次数从m次到n次
# 匹配的8-20位密码,可以是数字,字母下划线
re1 = re.match('[\w]{8,20}','asd123asd123')

print(re1.group())

表示字符串的边界

$表示以。。。。结尾

# 匹配的是邮箱,@符号前面有4,20位
re1 = re.match(r'[\w]{4,20}@163\.com$','asd123@163.comasd123')

^ 表示以。。。开头

re1 = re.match(r'^[\w]{4,20}@163\.com$','@asd123@163.com')

分组

|表示的是俩边任何一个表达式都可以

  #匹配0-100的数字
    re1 = re.match(r'[1-9]?\d$|100','100')

()分组

#匹配电话号码,要求取出要求取出区号或者电话号码。
re1=re.match(r'(\d{2,4})-(\d{7})$','0571-8922222')
print(re1.group())
print(re1.group(1))
print(re1.group(2))

\number关于引用分组匹配到的字符串

# 匹配的是<div>this is div</div>
# 匹配DIV。匹配尖括号DIV。尖括号。这是DIV。尖括号。
str1 = '<a>this is div</a>'
re1 = re.match(r'<[a-zA-Z]+>.*</[a-zA-Z]+>',str1)
re1 = re.match(r'<([a-zA-Z]+)>.*</\1>',str1)
print(re1.group())

注意点:
1、第一个分组的结果,作为第二个人分组额依据
2、适用于成对出现的数据

(?P) 和(?P=name)

str2 = '<div><a>这是包着的超链接</a></div>'
re1 = re.match('<(?P<name1>\w+)><(?P<name2>\w+)>.*</(?P=name2)></(?P=name1)>',str2)
print(re1.group())
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值