正则表达式使用系列(二)match 方法

match 方法

从字符串的头部戒者指定位置开始查找一次匹配,只要找到了一个匹配的结果就返回
match(string[, pos[, endpos]])
string 是待匹配的字符串
pos 和 endpos 可选参数,指定字符串的起始和终点位置,默认值分别是 0 和 len
(字符串长度)。
当匹配成功时,返回一个 Match 对象,如果没有匹配上,则返回 None。

范例

import re
pattern = re.compile(r'\d+') # 用于匹配至少一个数字
m = pattern.match('one12twothree34four') # 查找头部,没有匹配
print(m)
m = pattern.match('one12twothree34four', 2, 10) # 从'e'的位置开始匹配,没有匹配
print(m)

m = pattern.match('one12twothree34four', 3, 10) # 从'1'的位置开始匹配,正好匹配
print(m) # 返回一个 Match 对象
print(m.group(0)) # 可省略 0
print(m.start(0)) # 可省略 0
print(m.end(0)) # 可省略 0
print(m.span(0)) # 可省略 0

Match 对象

group([group1, …]) 获得一个多个分组匹配的字符串
group()戒 group(0) 获得整个匹配的子串
start([group]) 获取分组匹配的子串在整个字符串中的起始位置(子串第一个字符的索引)
end([group]) / 获取分组匹配的子串在整个字符串中的结束位置(子串最后一个字符的索引
+1)
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 对象
print(m.group(0)) # 返回匹配成功的整个子串
print(m.span(0)) # 返回匹配成功的整个子串的索引
print(m.group(1)) # 返回第一个分组匹配成功的子串
print(m.span(1)) # 返回第一个分组匹配成功的子串的索引
print(m.group(2)) # 返回第二个分组匹配成功的子串
print(m.span(2)) # 返回第二个分组匹配成功的子串
print(m.groups()) # 等价于 (m.group(1), m.group(2), ...)
print(m.group(3)) # 不存在第三个分组 IndexError: no such group

jupyter notebook 展示

正则表达式使用系列(二)match 方法

RPA 正则 match 组件使用说明

match 组件使用说明:http://support.i-search.com.cn:8088/showdoc/web/#/82?page_id=2543
使用时注意 flags 参数,本人常用推荐使用 re.M,re.S
* re.M 多行匹配,影响 ^ 和 $
* re.S 使 . 匹配包括换行在内的所有字符