3. python中search和match的返回结果MatchObject怎么用,举例
时间: 2024-12-08 11:18:24 浏览: 14
在Python的正则表达式模块`re`中,`search()`函数用于查找字符串中首个匹配正则表达式的子串,而`match()`函数则是从字符串开始位置尝试匹配正则表达式。如果找到匹配,它们都会返回一个`MatchObject`。
`MatchObject`是一个特殊类型的对象,包含了关于匹配到的信息,包括:
1. `group()`和`groups()`:可以获取整个匹配的结果或分组捕获的内容。例如:
```python
import re
pattern = r"(\d{4})-(\d{2})-(\d{2})"
text = "2022-06-15"
match = re.search(pattern, text)
year = match.group(1) # 获取年份部分,这里是"2022"
month = match.group(2) # 获取月份部分,这里是"06"
day = match.group(3) # 获取日期部分,这里是"15"
```
2. `start()`和`end()`:提供匹配范围的起始和结束索引。
3. `span()`:返回整个匹配的元组(起始索引, 结束索引)。
3. `is_match()`:判断字符串是否完全匹配正则表达式。
如果没找到匹配,`search()`会返回`None`,而`match()`只在字符串开始处寻找,找不到也会返回`None`。
例子:
```python
pattern = r"\d+" # 匹配连续的数字
text = "abc123def456"
search_res = re.search(pattern, text)
if search_res:
print(f"找到了匹配:{search_res.group()} (起始索引: {search_res.start()})")
else:
print("未找到匹配")
match_res = re.match(pattern, text)
if match_res:
print(f"文本开头的匹配:{match_res.group()} (起始索引: {match_res.start()})")
else:
print("文本开头无匹配")
```
阅读全文