正则 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

  

原文地址:https://www.cnblogs.com/shangwei/p/13496483.html