• 正则表达式


    正则表达式

    介绍

    1.前提:

    ​ 该知识点不属于任何一门编程语言,是一个独立的学科,主要用于数据的查找与筛选

    2.有无使用正则表达式的区别

    1. # 不使用正则表达式
    2. phone_num = input('请输入您的手机号码:').strip()
    3. if phone_num.isdigit():
    4. if len(phone_num)==11:
    5. if phone_num.startswith('13') or phone_num.startswith('15') or phone_num.startswith('19') or phone_num.startswith('17'):
    6. print('手机号合法')
    7. print(int(phone_num))
    8. else:
    9. print('手机号开头不对')
    10. else:
    11. print('手机号必须是11位')
    12. else:
    13. print('手机号必须是纯数字')
    14. # 正则表达式实现
    15. import re
    16. phone_num = input('请输入您的手机号码:').strip()
    17. if re.match('^[13|15|17|19][0-9]{9}',phone_num):
    18. print(phone_num)
    19. else:print('输入不合法')

    3.正则表达式线上测试网址

    正则表达式在线测试 - 站长工具

    4.总结

    ​ 正则表达式本质上就是使用一些符号的组合产生一些特殊的含义,然后去字符串中筛选出符合条件的数据

    正则表达式之字符组

    1.字符组在没有量词修饰的情况下,一次只会针对一个数据值

    2..不同字符组的意义

    字符组意义
    [0-9]匹配0到9之间的任意数字(包括0和9),全称:[0123456789]
    [A-Z]匹配A到Z之间的任意字母(包括A和Z),全称:[ABCDEFGHIJKLMOPQRSTUVWXYZ]
    [a-z]匹配a到z之间的任意字母(包括a和z),全称:[abcdefghijklmnopqrstuvwryz]
    [0-9a-zA-Z]数字、大小写的所有字母都可以匹配

    正则表达式之特殊符号

    1.特殊符号在没有量词修饰的情况下,一个符号一次只会针对一个数据值

    2.不同特殊符号的意义

    特殊符号意义
    .匹配除换行符以外的任意字符
    \w匹配字母或数字下划线
    \W匹配非字母、数字或下划线的任意字符
    \d匹配数字
    ^匹配字符串的开头
    ^..$精确匹配具体数值,只能匹配^和$之间的数据值
    $匹配字符串的结尾
    a|b匹配字符a或b(管道符一般都表示或)
    ()给正则表达式分组,不影响正则表达式的匹配(用于后续给正则表达式起别名,分组获取数据)
    []匹配[ ]内的字符
    [^]匹配除[ ]内的所有字符

    正则表达式之量词

    1.在正则表达式中,所有的量词,默认都是贪婪匹配(尽可能多的)

    2.注意事项

    量词不能单独使用,必须跟在表达式后面,并且只能影响紧挨着的左边那个

    3.不同量词的意义

    量词意义
    *重复零次或多次(默认尽可能多)
    +重复一次或多次(默认尽可能多)
    ?重复零次或一次(默认就是一次)
    {n}重名n次
    {n,}重复n次或更多次
    {n,m}重复n到m次

    正则表达式之练习题

    正则表达式字符串结果
    海.海燕海娇海东海燕、海娇、海东(三条)
    ^海.海燕海娇海东海燕
    海.$海燕海娇海东海东
    李.?李杰和李莲英和李二棍子李杰和李莲英和李二棍子
    李.+李杰和李莲英和李二棍子李杰和李莲英和李二棍子
    李.{1,2}李杰和李莲英和李二棍子李杰和
    李[杰莲英二棍子]李杰和李莲英和李二棍子李杰、李莲英、李二棍子
    李[ ^ 和 ]*李杰和李莲英和李二棍子李杰、李莲英、李二棍子
    [\d]456bdha34、5、6、3
    [\d]+456bdha3456、3

    贪婪匹配与非贪婪匹配

    一、非贪婪匹配

    所有量词默认都是贪婪匹配,但是如果量词的后面紧跟一个问号,就会变成非贪婪匹配

    二、小诀窍

    以后我们在使用贪婪匹配或者非贪婪匹配的时候,一般都是用 .* 或者.*?

    并且结束的标志有上述符号左右两边添加的表达式决定

    1. 待匹配文本:
    2. 正则表达式:<.*> # 贪婪匹配
    3. 结果是:

    取消转义

    1.正则表达式中取消斜杠与字母的特殊含义的方法

    就是在斜杠前面加斜杠

    1. \\n ===> \n
    2. \\\\n ===> \\n

    2.在python中有更简单的写法

    1. r'\n'
    2. r'\\n

    正则表达式实战

    1. 1.编写校验用户手机号的正则
    2. 0?(13|14|15|17|18|19)[0-9]{9}
    3. 2.编写校验用户身份证的正则
    4. \d{17}[\d|x]|\d{15}
    5. 3.编写校验用户邮箱的正则
    6. \w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}
    7. 4.编写校验用户QQ号的正则
    8. [1-9]([0-9]{5,11})
  • 相关阅读:
    【C语言】函数
    ADB 操作命令详解及用法大全
    WebDAV之葫芦儿·派盘+墨阅
    Window系统安装Lua
    mysql悲观锁是行锁还是表锁?
    自动导入时,Element-plus Message Box组件样式丢失
    C++ Reference: Standard C++ Library reference: Containers: array: array: fill
    实测 ubuntu 20.04 编译LIO-SAM问题与解决办法
    MoeCTF2022 部分Crypto 复现
    博流BL602芯片 - 烧录配置
  • 原文地址:https://blog.csdn.net/m0_72557783/article/details/128188812