Python中正则的三个基础方法
在 Python 中,正则表达式主要通过 re
模块实现,其中三个最基础且常用的方法是 match()
、search()
和 findall()
。它们用于处理字符串与正则表达式的匹配逻辑,适用场景各有不同。
1. re.match(pattern, string, flags=0)
- 功能:从字符串的开头位置开始匹配正则表达式。如果字符串开头不符合模式,则返回
None
;否则返回一个匹配对象(Match
对象)。 - 特点:只检查字符串开头,不匹配中间内容。
import reresult = re.match(r'hello', 'hello world')
print(result) # <re.Match object; span=(0, 5), match='hello'>
print(result.group()) # 'hello' (获取匹配的内容)# 字符串开头不匹配的情况
result2 = re.match(r'world', 'hello world')
print(result2) # None
2. re.search(pattern, string, flags=0)
- 功能:在整个字符串中搜索第一个符合正则表达式的内容,不限制于开头。找到则返回匹配对象,否则返回
None
。 - 特点:扫描整个字符串,返回第一个匹配结果(不继续查找后续匹配)。
import reresult = re.search(r'world', 'hello world')
print(result) # <re.Match object; span=(6, 11), match='world'>
print(result.group()) # 'world'# 查找数字
result2 = re.search(r'\d+', 'age: 25, height: 180')
print(result2.group()) # '25' (只返回第一个匹配的数字)
(\d
:表示匹配任意一个数字字符(0-9),等价于 [0-9]
+
:表示 “匹配前面的元素一次或多次”(至少出现 1 次)
组合含义:匹配一个或多个连续的数字(比如整数、手机号中的数字部分等))
详见:详解正则表达式中的元字符(python)-CSDN博客
3. re.findall(pattern, string, flags=0)
- 功能:在整个字符串中查找所有符合正则表达式的内容,返回一个包含所有匹配结果的列表(无匹配则返回空列表)。
- 特点:全局匹配,返回所有结果,适合提取多个符合条件的内容。
import re# 提取所有数字
result = re.findall(r'\d+', 'age: 25, height: 180, weight: 70')
print(result) # ['25', '180', '70']# 提取所有单词
result2 = re.findall(r'\w+', 'hello, world! python is great')
print(result2) # ['hello', 'world', 'python', 'is', 'great']
(
\w
:表示匹配任意一个字母、数字或下划线(a-z、A-Z、0-9、_),等价于 [a-zA-Z0-9_]
。
+
:同样表示 “匹配前面的元素一次或多次”。
组合含义:匹配一个或多个连续的字母、数字或下划线(比如单词、变量名、用户名等))
详见:详解正则表达式中的元字符(python)-CSDN博客
总结对比
方法 | 匹配范围 | 返回值 | 适用场景 |
---|---|---|---|
match() | 仅字符串开头 | 匹配对象(或 None ) | 验证字符串是否以特定内容开头 |
search() | 整个字符串(首个) | 匹配对象(或 None ) | 查找字符串中是否存在目标内容 |
findall() | 整个字符串(全部) | 包含所有匹配结果的列表 | 提取所有符合条件的内容 |