• Python瓦匠 —— 正则表达式(六)


    一 不区分大小写的匹配

    通常,正则表达式不区分大小写。

    要让正则表达式区分大小写,可以向re.comppile()传入re.IGNORECASE或re.I作为第二个参数。

    例如:

    >>> import re
    >>> case = re.compile(r'jack',re.I)#忽视大小写。
    >>> mo = case.search('Jack is the best choice!')
    >>> mo.group()
    'Jack'

    二 用sub()方法替换字符串

    正则表达式可以用新的文本替换旧的文本。

    Regex对象的sub()方法有两个参数:一个用于取代发现的字符串,一个是需要匹配的字符串。sub()方法返回替换完成的字符串。

    例如:

    >>> namesRegex = re.compile(r'Agent w+')
    >>> namesRegex.sub('Jack','Agent is a good boy!')#返回新的字符串。
    'Jack a good boy!'

    有时候可能需要用匹配的文本本身作为匹配的字符串。在sub()中的第一个参数中,可以输入1 , 2 , 3...。表示替换中输入分组1,2,3...的文本。

    例如:

    >>> namesRegex = re.compile(r'Agent (w)w+')
    >>> namesRegex.sub(r'1**','Agent Jack is a good boy!')
    'J** is a good boy!'
    >>> 

    三 管理复杂的正则表达式

    当匹配复杂的文本模式,可能需要难以理解的正则表达式。可以向re.compile()传入变量re.VERBOSE作为第二个变量。这样re,compile()会忽略正则表达式中的空白符和注释,书写更加可读的正则表达式。

    nameRegex = re.compile(r''' 正则表达式 ''',re.VERBOSE)

    四 组合使用re.IGNORECASE、re.DOTALL、re.VERBOSE

    re.compile()只能接收一个第二个参数。要想要组合使用它们,可以使用管道字符(|)将变量组合起来,从而绕过这个限制。管道在这里被称为‘按位或’操作符。

    nameRegex = re.compile('Jack',IGNORECASE|re.DOTALL|re.VERBOSE)

  • 相关阅读:
    CSS 背景
    CSS padding 属性
    CSS border 属性和 border-collapse 属性
    CSS margin 属性
    IEnumerable<T> 接口和GetEnumerator 详解
    discuz! X3.4特殊字符乱码解决方案
    Discuz通过修改文章标题更好的实现SEO的方法
    关于Discuz x3.3页面空白解决方法
    discuz x3.3标题的最少字数限制设置方法
    discuz网站前端代码优化思路
  • 原文地址:https://www.cnblogs.com/BeautifulSoup/p/8412879.html
Copyright © 2020-2023  润新知