• python学习笔记(09)---(正则表达式)


    第七章  内置容器(五)

    8.正则表达式

    (1)正则表达式用于描述字符串的复杂文本规则的代码,一般用于查询匹配

    (2)常见元字符

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

    <2> 单字符匹配的元字符:

    <2> 数量元字符

    <3> 边界字符

    <4> 其他元字符

     

    <5> 分组元字符

    (3)示例:

    <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'

    (4)re模块

    <1> 需要加载:import re

    <2> math()方法

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

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

    • pattern:使用正则表达式表示的模式字符串
    • string:要匹配的字符串
    • flags:可省略,表示标志位,控制匹配方法。如:是否区分大小写字母

    <3> 例:匹配字符串是否以mr_开头,不区分大小写。

    1. import re as s
    2. p = r'mr_\w+' # 模式字符串
    3. str1 = 'MR_SHOP mr_shop'
    4. m = s.match(p, str1, s.I)
    5. print(m)
    6. #
    7. # 返回的对象内置多个功能方法
    8. print('匹配值的起始位置:',m.start()) # 0
    9. print('匹配值的结束位置:',m.end()) # 7
    10. print('匹配位置的元组:',m.span()) # (0, 7)
    11. print('匹配的数据:',m.group()) # MR_SHOP
    12. str2 = '123MR_SHOP mr_shop'
    13. n = a.match(p, str2, a.I)
    14. print(n) # None
    15. # 只能在起始位置匹配

    <4> 例:验证输入的手机号是否为中国移动的号码

    1. import re as a
    2. m = input('请输入手机号:')
    3. p = r'(13[4-9]\d{8})$|(14[01289]\d{8})$'
    4. mt = a.match(p, m)
    5. if mt == None:
    6. print('不是移动号段')
    7. else:
    8. print(m, '是有效的中国移动手机号段')
    9. # 请输入手机号:13512345678
    10. # 13512345678 是有效的中国移动手机号段

    <5> search()方法匹配:

    • 作用:在字符串任意位置进行检索第一个匹配的值,成功则返回search对象,不成功返回None
    • 格式:re.search(pattern,string,[flags])
    1. import re as s
    2. p = r'mr_\w+' # 模式字符串
    3. str1 = '123MR_SHOP mr_shop'
    4. m = s.search(p, str1, s.I)
    5. print(m)
    6. #

    <6> findall()方法

    • 作用:在字符串中检索所有符合正则表达式规则的字符串,并以列表的形式返回,不成功返回空列表
    • 格式:re.findall(pattern,string,[flags])
  • 相关阅读:
    HttpServletRequest接口详解,获取html用户输入的表单数据,HttpServletRequest请求域,请求转发机制
    python毕业设计作品基于django框架 教室图书馆座位预约系统毕设成品(7)中期检查报告
    bp神经网络中bp是什么意思,bp神经网络是什么网络
    25 个超棒的 Python 脚本合集
    Netty网络框架学习笔记-16(心跳(heartbeat)服务源码分析)
    如何学好次世代3D建模,学些什么,达到什么标准才能入行?
    这是一个很废的人的比赛经历
    (19)语义分割(5)_FCN基于VGG16的实现
    spring5
    Git基础命令
  • 原文地址:https://blog.csdn.net/weixin_62443409/article/details/128007842