正则中的findall
时间: 2024-09-13 09:07:46 浏览: 24
在正则表达式中,`findall`是一个常用的方法,它用于查找字符串中所有匹配正则表达式的子串。`findall`方法会返回一个列表,列表中包含所有匹配的非重叠匹配项。如果正则表达式中包含分组(括号),则`findall`返回的结果会是一个列表的列表,其中包含每个分组的匹配项。
具体来说,`findall`方法会按照如下规则工作:
1. 遍历输入字符串,寻找与正则表达式匹配的所有子串。
2. 如果正则表达式中没有分组,则直接返回所有匹配的子串列表。
3. 如果正则表达式中有分组,则返回每个分组匹配项的列表。如果正则表达式有多个分组,则这些分组的匹配项会组成一个元组,所有这样的元组会组成一个列表。
4. 如果没有找到任何匹配项,`findall`会返回一个空列表。
使用示例:
```python
import re
# 查找所有数字
result = re.findall(r'\d+', '123abc456def789')
print(result) # 输出: ['123', '456', '789']
# 查找所有单词
result = re.findall(r'\b\w+\b', 'hello world, this is a test.')
print(result) # 输出: ['hello', 'world', 'this', 'is', 'a', 'test']
# 查找所有带有分组的匹配项
result = re.findall(r'(\d+)-(\w+)', '123-abc, 456-def')
print(result) # 输出: [('123', 'abc'), ('456', 'def')]
```