zoukankan      html  css  js  c++  java
  • 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字符串正则表达式的相关知识,感兴趣的朋友可以关注我。

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

  • 相关阅读:
    如何解决列表框控件宽度不够的问题
    在windows Forms程序里面实现文件上传
    TFS的一些信息
    百钱百鸡问题
    如何移动SQL SERVER的系统数据库
    数据分页技术
    如何在报表中直接使用数据库中存储的图片
    重新注册MSJetOledb 4.0引擎
    2007 Microsoft Office Servers 已知问题/自述文件
    使用For XML与XSL(XSLT)配套快速输出查询结果到Web页面
  • 原文地址:https://www.cnblogs.com/a-mumu/p/14492355.html
Copyright © 2011-2022 走看看