python中的正则表达式基础应用

匹配单个字符

导入re包

import re

res = re.match(r"速度与激情[1-8]", "速度与激情1").group()
res = re.match(r"速度与激情[1-36-8a-e]", "速度与激情1").group() # 匹配的数据中间断档
res = re.match(r"速度与激情\w", "速度与激情1").group() # 匹配的数据中间断档
通过re包里的match来匹配
re.match(正则表达式的范围, 需要匹配的字符串)
通过group方法可以查询当前匹配的值
演示代码中[1-36-8a-e][1-3]+[6-8]+[a-e]的合集
\d 数字
\s 空格
\w [0-9][a-z][A-Z]

匹配多个字符

result = re.match(r"速度与激情\d{1,2}", "速度与激情12").group()
re.match(r"021-\d{8}", "021-12131231")
re.match(r"021-?\d{8}", "021-12131231")
re.match(r"021-?\d{8}", "02112131231")
通过{}来控制匹配的范围
演示代码中?:前一个字符可以出现一次或者不出现
  html_str = """<body><h1>hhhhhh</h1></body>"""
    # 通过()来组成一个组合
    # 当组合很多的时候可以通过:?P<p1>来命名,?P=名称调用(这里的P是大写的)
    # 一般是用/1、/2就可以了
    res = re.match(r"<(?P<p2>\w*)><(?P<p1>\w*)>\w+</(?P=p1)></(?P=p2)>", html_str).group()
    # print(res)

    # search方法  返回第一次匹配到的值
    res1 = re.search(r"\d+", "阅读书9999,点赞数1111").group()
    # print(res1)

    # findall统计所有的匹配结果,返回一个链表
    res1 = re.findall(r"\d+", "阅读书9999,点赞数1111")
    # print(res1)

    # sub将匹配到的数据进行全部替换
    # 并且支持将方法调用
    re.sub("\d+", "998", "python=1000")

综合演练

def main():
    email = input("请输入一个邮箱地址")
    result = re.match(r"[a-zA-Z0-9]{4,20}@(163|126|qq)\.com$", email)
    if result:
        print("符合要求%s" %email)
    else:
       print("不符合要求%s" %email)


if __name__ == '__main__':
    main()
    html_str = """<body><h1>hhhhhh</h1></body>"""
    # 一般是用/1、/2就可以了
    res = re.match(r"<(?P<p2>\w*)><(?P<p1>\w*)>\w+</(?P=p1)></(?P=p2)>", html_str).group()
    # print(res)
在演示代码中$引用是为了保证字符串是可以以什么结尾
[a-zA-Z0-9]{4,20}@(163|126|qq)\.com$:这个正则当中可以这样理解
[a-zA-Z0-9]{4,20}:匹配a-z或者A-Z或者0-9的字符出现4-20个
@:匹配邮箱的@符号
(163|126|qq):因为邮箱可以有很多种作为一个组合用括号引用,拥|表示或的关系
\.:因为在正则表达式中.可以匹配很多数据(除了\n),通过\.转义
com$:匹配以.com结尾
综上所述组合起来就是一个简单的邮箱正则表达式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值