• Python合集之Python正则表达式(三)


    1.在Python中使用正则表达式语法    

    在Python中使用正则表达式时,是将其作为模式字符串使用。

    例如:将匹配不是字母的一个字符的正则表达式表示为模式字符串,可以使用下面的代码:

    '[^a-zA-Z]'

    而如果将匹配以字母m开头的单词的正则表达式转换为模式字符串,则不能直接在其两侧添加引号定界符。

    例如:下面的代码是不正确的:

    'mw*'

    而是需要将其中的 进行转义,转换后的结果为:

    '\bm\w*\b'

    由于模式字符串可能包含大量的特殊字符和反斜杠,所以需要写为原生字符串,即在模式字符串前加r 或R.

    例如:上面的模式字符串采用原生字符串表示为:

    r'mw*'

    注:在编写模式字符串时,并不是所有的反斜杠都需要进行转换。例如,前面编写的正则表达式“^d{8}$”中反斜杠就不需要转义,因为其中的d并没有特殊意义。

    2.使用re模块实现正则表达式操作

    Python中提供了re模块,用于实现正则表达式的操作。在实现时,可以使用re模块提供的方法进行字符串处理,也可以先使用re模块的compile()方法将模式字符串转为换正则表达式对象,然后再使用该正则表达式对象的相关方法来操作字符串。

    re模块在使用时,需要先应用import语句引入,具体代码如下:

    import re

    注:如果在使用re模块时,没有将其引入,将会抛出相关的异常信息。

    2.1 使用match()方法进行匹配

    match()方法用于将字符串的开始进行匹配,如果在起始位置匹配成功,则返回Match对象,否则返回None.其语法格式如下:

    re.match(pattern,string,[flags])
    参数说明:
    pattern:表示模式字符串,由要匹配的正则表达式转换而来。
    string:表示要匹配的字符串。
    flags:可选参数,表示标志位,用于控制匹配方式,如是否区分字母大小写。常用的标志如下表。
    标志 说明
    A或ASCII 对于w W  B d D s S 只进行ASCII匹配(仅适用于Python3.X)
    I或IGNORECASE 执行不区分字母大小写的匹配
    M或MULTILINE 将^和$用于包括整个字符串的开始和结尾的每一行(默认情况下,仅适用于整个字符串的开始和结尾处)
    S或DOTALL 使用()字符匹配所有字符,包括换行符
    X或VERBOSE 忽略模式字符串中未定义的空格和注释

    例如:匹配字符串是否以 “mr_”开头,不区分字母大小写,代码如下:

    import re
    pattern=r'mr_w+'
    string='MR_SHOP mr_shop'
    match=re.match(pattern,string,re.I)
    print(match)
    string='项目名称MR_SHOP mr_shop'
    match=re.match(pattrtn,string,re.I)
    print(match)

    执行结果如下:

    <_sre.SRE_MATCH object;span=(0,7),match='MR_SHOP'>
    None

    从上面的执行结果可以看出,字符串“MR_SHOP”以“mr_”开头,返回一个Match对象,而字符串“项目名称MR_SHOP”没有以“mr_”开头,将返回None。这是因为match()方法从字符串的开始位置开始匹配,当第一个字母不符合条件时,则不在进行匹配,直接返回None。

    Match对象中包含了匹配值的位置和匹配的数据。其中,要获取匹配值得起始位置可以使用Match对象的start()方法;要获取匹配值得结束位置,可以使用end()方法,通过span()方法可以返回匹配位置的元组,通过string属性可以获取要匹配的字符串,例如:

    import re
    pattern=r'mr_w+'
    string='MR_SHOP mr_shop'
    match=re.match(pattern,string,re.I)
    print('匹配值的起始位置:'match.start())
    print('匹配值的结束位置:'match.end())
    print('匹配位置的元组:'match.span())
    print('要匹配的字符串:'match.string)
    print('匹配数据:'match.group())

    执行结果如下:

    匹配值的起始位置:0
    匹配值的结束位置:7
    匹配位置的元组:(0,7)
    要匹配的字符串:MR_SHOP mr_shop
    匹配数据:MR_SHOP

    花絮:

    本期的Python 字符串正则表达式就分享到这里,下期我们将继续分享Python字符串正则表达式的相关知识,感兴趣的朋友可以关注我。

    同时也可以关注下我的个人 微信订阅号,园子里面的文章也会第一时间在订阅号里面进行推送跟更新。

  • 相关阅读:
    (转)修改Android解锁界面
    linux terminal 快捷键
    (转)Android蓝牙开发浅析
    (转)android 编译单个模块
    (转)Android关机AppWidget的实现
    MyEclipse修改页面模板(JSP和HTML等) 分类: WEB项目应用 20100131 00:03 698人阅读 评论(1) 收藏
    定时任务:Timer类、TimerTask类 分类: java 20100317 22:01 551人阅读 评论(0) 收藏
    Socket读取输入流 分类: java 20100322 17:38 3330人阅读 评论(0) 收藏
    [Microsoft][SQLServer 2000 Driver for JDBC]Object has been closed. 分类: 开发常见问题解决方案 20100318 22:05 1106人阅读 评论(0) 收藏
    3/17/10 9:55:59 AM CST: [INFO] User settings file does not exist C:/Documents and Settings/Administrator/.m2/settings.xml 分类: 开发常见问题解决方案 20100317 10:20 3448人阅读 评论(4) 收藏
  • 原文地址:https://www.cnblogs.com/a-mumu/p/14492355.html
Copyright © 2020-2023  润新知