zoukankan      html  css  js  c++  java
  • python 的内置模块 re

    在 pattern 的 “” 前面需要加上一个 r 用来表示这是正则表达式, 而不是普通字符串

    >>> import re
    >>> ptn = r"r[au]n"
    >>> print(re.search(ptn, "dog runs to cat"))
    <re.Match object; span=(4, 7), match='run'>

     同样, 中括号 [] 中还可以是以下这些或者是这些的组合. 比如 [A-Z] 表示的就是所有大写的英文字母. [0-9a-z] 表示可以是数字也可以是任何小写字母。

    注意 re.search只要找到第一个匹配然后返回,如果字符串没有匹配,则返回None。

    >>> print(re.search(r"r[0-9a-z]n", "dog run to cat r4n"))
    <re.Match object; span=(4, 7), match='run'>
    >>> print(re.search(r"r[0-9a-z]n", "dog to cat r4n"))
    <re.Match object; span=(11, 14), match='r4n'>

    flags 参数编译标志位,用于修改正则表达式的匹配方式,如:是否区分大小写,多行匹配

    re.S(DOTALL)
    使.匹配包括换行在内的所有字符
    re.I(IGNORECASE)
    使匹配对大小写不敏感
    re.L(LOCALE)
    做本地化识别(locale-aware)匹配,法语等
    re.M(MULTILINE)
    多行匹配,影响^和$
    re.X(VERBOSE)
    该标志通过给予更灵活的格式以便将正则表达式写得更易于理解
    re.U
    根据Unicode字符集解析字符,这个标志影响w,W,,B

    *注:match和search一旦匹配成功,就是一个match object对象,而match object对象有以下方法:

    • group() 返回被 RE 匹配的字符串
    • start() 返回匹配开始的位置
    • end() 返回匹配结束的位置
    • span() 返回一个元组包含匹配 (开始,结束) 的位置
    • group() 返回re整体匹配的字符串,可以一次输入多个组号,对应组号匹配的字符串。

    a. group()返回re整体匹配的字符串,
    b. group (n,m) 返回组号为n,m所匹配的字符串,如果组号不存在,则返回indexError异常
    c. groups() 方法返回一个包含正则表达式中所有小组字符串的元组,从 1 到所含的小组号,通常groups()不需要参数,返回一个元组,元组中的元就是正则表达式中定义的组。 

    分组

    当使用 match.group() 时, 他会返回所有组里的内容, 而如果给 .group(1) 里加一个数, 它就能定位你需要返回哪个组里的信息;在括号的开头写上这样的形式 ?P<名字> 就给这个组定义了一个名字. 然后就能用这个名字找到这个组的内容

    >>> match = re.search(r"(?P<id>d+), Date: (?P<date>.+)", "ID: 021523, Date: Feb/12/2017")
    >>> print(match.group('id'))
    021523
    >>> print(match.group(1))
    021523
    >>> print(match.group())
    021523, Date: Feb/12/2017

    相关文章链接:正则表达式

             python中的正则表达式(re模块)  

     

  • 相关阅读:
    【python学以致用】给PDF添加书签目录,Python解析书签JSON python王者归来 带书签版
    Difference between os.path.exists and os.path.isfile?
    Python的os.listdir配合os.path.isdir不返回目录
    selenium + geckodriver报 Message: Unable to find a matching set of capabilities
    TypeError: string argument without an encoding
    使用gevent时遇到的一些问题记录
    【JavaSE】基本类型包装类(以Integer代表)
    【JavaSE】其他常用类:Math、Random、Calendar、System
    【JavaSE】黑马程序员 刘意 基础部分笔记
    【JavaSE】集合容器的总结(全)
  • 原文地址:https://www.cnblogs.com/xuey/p/9468189.html
Copyright © 2011-2022 走看看