• python re模块 正则表达式


    re.compile 函数

    compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象,供 match() 和 search() 这两个函数使用。

    语法格式为:

    re.compile(pattern[, flags])

    参数:

    • pattern : 一个字符串形式的正则表达式

    • flags : 可选,表示匹配模式,比如忽略大小写,多行模式等,具体参数为:

      1. re.I 忽略大小写
      2. re.L 表示特殊字符集 w, W, , B, s, S 依赖于当前环境
      3. re.M 多行模式
      4. re.S 即为 . 并且包括换行符在内的任意字符(. 不包括换行符)
      5. re.U 表示特殊字符集 w, W, , B, d, D, s, S 依赖于 Unicode 字符属性数据库
      6. re.X 为了增加可读性,忽略空格和 # 后面的注释
    >>>import re
    >>> pattern = re.compile(r'd+')                    # 用于匹配至少一个数字
    >>> m = pattern.match('one12twothree34four')        # 查找头部,没有匹配
    >>> print m
    None
    >>> m = pattern.match('one12twothree34four', 2, 10) # 从'e'的位置开始匹配,没有匹配
    >>> print m
    None
    >>> m = pattern.match('one12twothree34four', 3, 10) # 从'1'的位置开始匹配,正好匹配
    >>> print m                                         # 返回一个 Match 对象
    <_sre.SRE_Match object at 0x10a42aac0>
    >>> m.group(0)   # 可省略 0
    '12'
    >>> m.start(0)   # 可省略 0
    3
    >>> m.end(0)     # 可省略 0
    5
    >>> m.span(0)    # 可省略 0
    (3, 5)

    在上面,当匹配成功时返回一个 Match 对象,其中:

    • group([group1, …]) 方法用于获得一个或多个分组匹配的字符串,当要获得整个匹配的子串时,可直接使用 group() 或 group(0)
    • start([group]) 方法用于获取分组匹配的子串在整个字符串中的起始位置(子串第一个字符的索引),参数默认值为 0;
    • end([group]) 方法用于获取分组匹配的子串在整个字符串中的结束位置(子串最后一个字符的索引+1),参数默认值为 0;
    • span([group]) 方法返回 (start(group), end(group))
    >>>import re
    >>> pattern = re.compile(r'([a-z]+) ([a-z]+)', re.I)   # re.I 表示忽略大小写
    >>> m = pattern.match('Hello World Wide Web')
    >>> print m                               # 匹配成功,返回一个 Match 对象
    <_sre.SRE_Match object at 0x10bea83e8>
    >>> m.group(0)                            # 返回匹配成功的整个子串
    'Hello World'
    >>> m.span(0)                             # 返回匹配成功的整个子串的索引
    (0, 11)
    >>> m.group(1)                            # 返回第一个分组匹配成功的子串
    'Hello'
    >>> m.span(1)                             # 返回第一个分组匹配成功的子串的索引
    (0, 5)
    >>> m.group(2)                            # 返回第二个分组匹配成功的子串
    'World'
    >>> m.span(2)                             # 返回第二个分组匹配成功的子串
    (6, 11)
    >>> m.groups()                            # 等价于 (m.group(1), m.group(2), ...)
    ('Hello', 'World')
    >>> m.group(3)                            # 不存在第三个分组
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    IndexError: no such group
    不考虑业务场景,一味的争执技术的高下,都是耍流氓。
  • 相关阅读:
    Script to Create Benchmark Procs
    自定义数据类型修改
    需求管理工具试用 – CaliberRM
    标识值重复的原因示例
    Vmware vFabric Suite开始支持自动化部署与PostgreSQL
    在ubuntu上安装Oracle Java SDK
    详解数据中心基础设施的模块化建设
    Xcode 4 无证书真机调试 环境配置
    Calculate_and_Insert_Event_Intervals_in_SQL2005_Profiler
    浏览器工作原理
  • 原文地址:https://www.cnblogs.com/leoych/p/14442300.html
Copyright © 2020-2023  润新知