zoukankan      html  css  js  c++  java
  • 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)

  • 相关阅读:
    动态规划算法介绍——概念、意义及应用、例题
    两个大数相减
    删除apache的签名的shell脚本
    C++中智能指针的设计和使用
    eclipse save action不起作用
    [leetcode]51. N-QueensN皇后
    [leetcode]33. Search in Rotated Sorted Array旋转过有序数组里找目标值
    [leetcode]88. Merge Sorted Array归并有序数组
    [leetcode]636. Exclusive Time of Functions函数独占时间
    [leetcode]257. Binary Tree Paths二叉树路径
  • 原文地址:https://www.cnblogs.com/BeautifulSoup/p/8412879.html
Copyright © 2011-2022 走看看