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结尾
综上所述组合起来就是一个简单的邮箱正则表达式
发布了1 篇原创文章 · 获赞 0 · 访问量 19
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 1024 设计师: 上身试试

分享到微信朋友圈

×

扫一扫,手机浏览