码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Python之第六章 内置容器 --- 正则表达式


    目录

    Python之第六章 内置容器 --- 正则表达式

    1.定义

    2.常见元字符

    3.数量元字符

    4.边界字符

    5.其他元字符

    6.分组元字符

    7.实例:

    例1 匹配8位qq号

    例2 匹配任意元音字母

    例3 匹配省份证号:18位,前17位为数字,最后一位为x或X进行效验

    例4 匹配输入的163、126、qq、邮箱,前面至少5位,最多11位

    例5 检索Python文件名为:xxxx.py

    8.re模块

    math()方法

    例 匹配字符串是否以mr_开头,不区分大小写

    例 验证输入的手机号为中国移动

    search()方法

    例

    findall()方法


    Python之第六章 内置容器 --- 正则表达式

    1.定义

            用于描述字符串的复杂文本规则的代码,一般用于查询匹配

    2.常见元字符

            作用 --- 表示特殊含义,一般为范围性、不好确切描述的字符串

    字符功能
    .匹配任意个字符
    [ ]匹配[ ]中列举的字符
    \d匹配0-9的数字
    \D匹配非数字
    \s匹配空白(空格、tab)
    \S匹配非空白
    \w匹配0-9、a-z、A-Z、下划线、汉字
    \W匹配非0-9、a-z、A-Z、下划线、汉字

    3.数量元字符

    字符功能
    *匹配前面的字符0次或多次、可有可无
    ?匹配前面的字符1次或0次,至少有1次,要么没有
    +匹配前面的字符1次或多次
    {m}匹配前面的字符出现m次
    {m,}匹配前面的字符至少出现m次
    {m,n}匹配前面的字符至少出现m次,至多出现n次

    4.边界字符

    字符功能
    ^行首
    $行尾
    \b匹配单词的开始或结束,分界符为空格或其他
    \B匹配非单词边界

    5.其他元字符

    字符功能
    [ ^ ]排除
    \转义

    6.分组元字符

    字符功能
    |匹配左右两边任意一个表达式
    (ab)\将括号中的字符作为一个分组

    7.实例:

    例1 匹配8位qq号

     ^\d{8}$

    例2 匹配任意元音字母

    [aeiou]

    例3 匹配省份证号:18位,前17位为数字,最后一位为x或X进行效验

    (^\d[17])(\d|X|x)$

    例4 匹配输入的163、126、qq、邮箱,前面至少5位,最多11位

    r'\w{5,11}@(163|126|qq)\.(com|cn)'

    例5 检索Python文件名为:xxxx.py

    r'\w+\.py\b'

    8.re模块

            需要加载 --- import re

    math()方法

            作用 --- 从字符串起始位置起开始查找匹配,成功返回math对象,否则返回None,只能匹配个

            格式 --- re.math(pattern,string,[ flags ])

    pattern --- 使用正则表达式表示的模式字符串

    string --- 要匹配的字符串

    flags --- 可省略,用来表示标志位,控制匹配方式,如:是否区分大小写字母等

    标志作用
    AASCII码匹配
    I不区分大小写字母
    M将^和$应用于一行
    S使用( . )匹配所有字符
    X忽略空格、注释等

    例 匹配字符串是否以mr_开头,不区分大小写

    1. # 例 匹配字符串是否以mr_开头,不区分大小写
    2. import re
    3. ​
    4. p = r'mr_\w+'  # 模式字符串
    5. str1 = 'MR_SHOP wr_shop'
    6. w = re.match(p, str1, re.I)
    7. print(w)
    8. ​
    9. # 返回的对象内置多个功能方法
    10. print('匹配值的起始位置:', w.start())
    11. print('匹配值得结束位置:', w.end())
    12. print('匹配位置的元组:', w.span())
    13. print('匹配的数据:', w.group())
    14. ​
    15. 结果:
    16. object; span=(0, 7), match='MR_SHOP'>
    17. 匹配值的起始位置: 0
    18. 匹配值得结束位置: 7
    19. 匹配位置的元组: (0, 7)
    20. 匹配的数据: MR_SHOP
    21. ​
    22. str2 = '123MR_SHOP mr_shop'
    23. n = re.match(p, str2, re.I)
    24. print(n)
    25. ​
    26. 结果:
    27. None

    例 验证输入的手机号为中国移动

    1. # 例 验证输入的手机号是否为中国移动的号码
    2. import re
    3. ​
    4. m = input('请输入手机号:')
    5. p = r'(13[4-9]\d{8})$|(15[01289])\d{8}$'
    6. mt = re.match(p, m)
    7. if mt == None:
    8.    print('该手机号不是移动号段')
    9. else:
    10.    print('是有效的中国移动手机号')
    11. ​
    12. 结果:
    13. 请输入手机号:13499999999
    14. 是有效的中国移动手机号

    search()方法

            作用 --- 在子字符串任意位置进行检索第一个匹配的值。成功返回search对象,不成功 返回None

            格式 --- re.searc(pattern,string,[ flags ] )

    pattern --- 使用正则表达式表示的模式字符串

    string --- 要匹配的字符串

    flags --- 可省略,用来表示标志位,控制匹配方式,如:是否区分大小写字母等

    例

    1. import re
    2. ​
    3. p = r'mr_\w+' # 模式字符串
    4. str1 = '123MR_SHOP wr_shop'
    5. w = re.search(p, str1, re.I)
    6. print(w)
    7. ​
    8. 结果:
    9. object; span=(3, 10), match='MR_SHOP'>

    findall()方法

            作用 --- 在字符串中检索所有符合正则表达式规则的字符串,并以列表形式返回,不成功返回None

            格式 --- re.findall( pattern,string,[ flags ] )

    pattern --- 使用正则表达式表示的模式字符串

    string --- 要匹配的字符串

    flags --- 可省略,用来表示标志位,控制匹配方式,如:是否区分大小写字母等

  • 相关阅读:
    Matlab图像处理-迭代式阈值选择法
    visio 封闭图形的填充过程
    再次捕获!重保期间拦截针对Coremail的钓鱼攻击
    计算机毕业设计之摄影器材租赁系统的设计与实现
    基于servlet+jsp+mysql网上书店系统
    弘玑Cyclone2022产品发布会:全新上线智能文档处理交互平台——尚书台
    FPGA/SoC控制机械臂
    什么是泛域名证书
    软考高级信息系统项目管理师系列论文四:论信息系统项目的成本管理
    十三 数学与经济管理
  • 原文地址:https://blog.csdn.net/qq_57289939/article/details/127811188
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号