• 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. p = r'mr_\w+'  # 模式字符串
    4. str1 = 'MR_SHOP wr_shop'
    5. w = re.match(p, str1, re.I)
    6. print(w)
    7. # 返回的对象内置多个功能方法
    8. print('匹配值的起始位置:', w.start())
    9. print('匹配值得结束位置:', w.end())
    10. print('匹配位置的元组:', w.span())
    11. print('匹配的数据:', w.group())
    12. 结果:
    13. object; span=(0, 7), match='MR_SHOP'>
    14. 匹配值的起始位置: 0
    15. 匹配值得结束位置: 7
    16. 匹配位置的元组: (0, 7)
    17. 匹配的数据: MR_SHOP
    18. str2 = '123MR_SHOP mr_shop'
    19. n = re.match(p, str2, re.I)
    20. print(n)
    21. 结果:
    22. None

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

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

    search()方法

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

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

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

    string --- 要匹配的字符串

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

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

    findall()方法

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

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

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

    string --- 要匹配的字符串

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

  • 相关阅读:
    一文讲透 RocketMQ 消费者是如何负载均衡的
    手记系列之三 ----- 关于使用Nginx的一些使用方法和经验
    【Oracle】基础知识面试题
    python:多波段遥感影像分离成单波段影像
    【Java探索之旅】运算符解析 算术运算符,关系运算符
    什么是RabbitMQ
    JVM的默认内存是怎么分配的?
    使用 Go 语言读取文件内容并进行反序列化
    Java新手小白入门篇 Java面向对象(七)
    C++模版初阶
  • 原文地址:https://blog.csdn.net/qq_57289939/article/details/127811188