• 正则 re.compile 函数


    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 为了增加可读性,忽略空格和 # 后面的注释
     1 # coding=utf-8
     2 import re
     3 import logging
     4 
     5 s = 'A1B2C55'
     6 # 用于匹配最少一位数字
     7 pattern = re.compile(r'd+')
     8 # match 从头开始匹配
     9 w = pattern.match(s)
    10 logging.warning(w)
    11 
    12 # 从 B 开始匹配
    13 w = pattern.match(s, 2, 10)
    14 logging.warning(w)
    15 
    16 # 从 2 开始匹配
    17 w = pattern.match(s, 3, 10)
    18 logging.warning(w)
    19 
    20 logging.warning(w.group())
    21 logging.warning(w.start())
    22 logging.warning(w.end())
    23 logging.warning(w.span())
    案例

    输出结果:

    WARNING:root:None
    WARNING:root:None
    WARNING:root:<_sre.SRE_Match object at 0x7fd93b5dab90>
    WARNING:root:2
    WARNING:root:3
    WARNING:root:4
    WARNING:root:(3, 4)

      

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

    • group([group1, …]) 方法用于获得一个或多个分组匹配的字符串,当要获得整个匹配的子串时,可直接使用 group() 或 group(0)
    • start([group]) 方法用于获取分组匹配的子串在整个字符串中的起始位置(子串第一个字符的索引),参数默认值为 0;
    • end([group]) 方法用于获取分组匹配的子串在整个字符串中的结束位置(子串最后一个字符的索引+1),参数默认值为 0;
    • span([group]) 方法返回 (start(group), end(group))
     1 # coding=utf-8
     2 import re
     3 import logging
     4 
     5 s = 'Hello Python Hello World'
     6 pattern = re.compile(r'([a-z]+) ([a-z]+)', re.I)
     7 # match 从头开始匹配
     8 w = pattern.match(s)
     9 # 打印结果
    10 logging.warning(w)
    11 # 返回成功的字符串
    12 logging.warning(w.group())
    13 # 返回第一个分组匹配到的子串
    14 logging.warning(w.group(1))
    15 # 返回第二个分组匹配到的子串
    16 logging.warning(w.group(2))
    17 # 返回第一个分组匹配到的子串索引
    18 logging.warning(w.span(1))
    19 # 返回第二个分组匹配到的子串索引
    20 logging.warning(w.span(2))
    21 # 等价于 (w.group(1), w.group(2), ...)
    22 logging.warning(w.groups())
    23 # 不存在第三个 会报错
    24 logging.warning(w.group(3))
    案例

    输出结果:

    WARNING:root:<_sre.SRE_Match object at 0x7f62f0583cf0>
    WARNING:root:Hello Python
    WARNING:root:Hello
    WARNING:root:Python
    WARNING:root:(0, 5)
    WARNING:root:(6, 12)
    WARNING:root:('Hello', 'Python')
    Traceback (most recent call last):
      File "test_word.py", line 17, in <module>
        logging.warning(w.group(3))
    IndexError: no such group

      

  • 相关阅读:
    flash 显示对象的getRect()方法的问题
    John Maccarthy
    一个c++ 2d图形引擎 AGG
    lisp 编程入门
    linux图形开发工具
    wxDevC++ – Dev C++的愛好者一定要知道的C++ IDE
    备忘 html5 canvas context2d/3d
    windows下使用boost库可以下载编译好的二进制安装包
    酷壳
    [.NET] : Provider Pattern
  • 原文地址:https://www.cnblogs.com/shangwei/p/13496483.html
Copyright © 2020-2023  润新知