`re.search()`函数与`re.findall()`有什么区别?
时间: 2024-06-22 15:02:32 浏览: 200
python re的findall和finditer的区别详解
`re.search()`函数和`re.findall()`都是Python正则表达式库`re`中的两个重要函数,它们用于在字符串中搜索匹配项,但功能和使用场景略有不同:
1. **`re.search(pattern, string)`**[^4]:
这个函数在给定的`string`中搜索第一个匹配正则表达式`pattern`的位置。如果找到匹配,它返回一个匹配对象(MatchObject),否则返回`None`。它只返回第一个匹配,不返回所有匹配。
```python
import re
pattern = r"hello"
match = re.search(pattern, "hello world")
if match:
print("Match found at position:", match.start()) # 输出:0
```
2. **`re.findall(pattern, string)`**[^4]:
这个函数在`string`中查找所有匹配正则表达式`pattern`的子串,并返回一个包含这些匹配的列表。如果找不到任何匹配,返回一个空列表。
```python
import re
pattern = r"o"
matches = re.findall(pattern, "hello world")
print(matches) # 输出:['o', 'o']
```
简而言之,`re.search()`用于定位首次出现的匹配,而`re.findall()`用于收集所有出现的匹配。如果你只需要第一个匹配的位置或存在与否,使用`search()`;如果你需要所有匹配的子串,使用`findall()`。
阅读全文