正则表达式-匹配分组

本文介绍了正则表达式中的匹配分组概念,通过多个示例展示了如何使用分组来匹配特定模式,如排除特定数字的手机号码验证、提取区号和电话号码以及匹配网址等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

匹配分组

字符作用
|匹配左右任意一个字符
(ab)将括号中的字符作为一个分组
\num引用分组 num 匹配的字符串
(?p<name>)分组起别名
(?P= name)引用别名为 name 分组匹配的字符串

示例

匹配出 0-100 之间的数字

import re

ret = re.match("[1-9]?\d", "9")
print(ret.group())

ret = re.match("[1-9]?\d", "89")
print(ret.group())

# 错误情况
# ret = re.match("[1-9]?\d", "09")
# print(ret.group())


ret = re.match("[1-9]?\d$", "09")
# print(ret.group())
if ret:
    print("匹配正确")
else:
    print("不在0-100 之间")

# 添加 |
ret = re.match("[1-9]?\d$|100","8")
print(ret.group())

ret = re.match("[1-9]?\d$|100","78")
print(ret.group())

ret = re.match("[1-9]?\d$|100","100")
print(ret.group())

示例()

import re

ret = re.match("\w{4,20}@163\.com", "yuguo@163.com")
print(ret.group())

ret = re.match("\w{4,20}@(163|qq|139)\.com", "yuguo@139.com")
print(ret.group())

ret = re.match("\w{4,20}@(163|139|qq)/.com", "yuguo@gmail.com")
# print(ret.group())
if ret:
    print(ret.group())
else:
    print("非 163、139、qq邮箱")

手机号 尾数不是 4 或 7 的手机号码

import re

tels = ["13100001234", "18912344321", "10086", "18800007777"]
for tel in tels:
    ret = re.match("1\d{9}[0-35-68-9]", tel)
    # print(ret.group())
    if ret:
        print("%s 尾号不是4和7"% tel)
    else:
        print("%s 尾号为 4 或 7")

提取区号和电话号码

import re
ret = re.match("([^-]*)-(\d+)","010-12345678")
print(ret.group())
print(ret.group(1))
print(ret.group(2))

示例 \number

匹配出

www.baidu.com

import re

labels = ["<html><h1>www.daibu.com</h1></html>", "<html><h1>www.baidu.com</h2></html>"]

for label in labels:
    ret = re.match(r"<(\w*)><(\w*)>.*</\2></\1>", label)
    if ret:
        print("%s 符合要求" %ret.group())
    else:
        print("%s 不符合要求" % label)

# 运行结果
<html><h1>www.daibu.cn</h1></html> 符合要求
<html><h1>www.baidu.cn</h2></html> 不符合要求
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值