re.match()是Python re模块用于从字符串开头匹配正则表达式的函数,若匹配成功返回匹配对象,否则返回None,仅检查开头不查找全文。

Python 中并没有一个叫做 match 函数的独立函数,你所说的“match函数”通常是指 re.match(),它是 Python 标准库
re模块中用于正则表达式匹配的一个方法。它用来判断一个字符串是否以某个特定的模式开头,并返回匹配结果。
re.match() 基本用法
re.match(pattern, string, flags=0)从字符串的起始位置尝试匹配正则表达式模式。如果匹配成功,返回一个匹配对象(Match Object);否则返回
None。
注意:它只检查字符串开头是否匹配,不会查找中间或结尾的内容。
示例:import re
result = re.match(r'hello', 'hello world')
if result:
print("匹配成功:", result.group()) # 输出: 匹配成功: hello
立即学习“Python免费学习笔记(深入)”;
常用正则模式语法说明
要正确使用 re.match(),需要掌握基本的正则表达式语法:
- ^:匹配字符串开头(re.match 默认自带)
- $:匹配字符串结尾
- .:匹配任意单个字符(除换行符)
- \d:匹配数字 [0-9]
- \w:匹配字母、数字、下划线 [a-zA-Z0-9_]
- *:前面的字符出现 0 次或多次
- +:前面的字符出现 1 次或多次
- ?:前面的字符出现 0 次或 1 次
- []:字符集合,如 [abc] 表示匹配 a、b 或 c
- ():分组,提取子匹配内容
例子:匹配手机号(以1开头的11位数字)
import re
pattern = r'^1\d{10}$'
result = re.match(pattern, '13812345678')
if result:
print("是合法手机号")
group() 和分组提取
使用括号 () 可以对匹配内容进行分组,然后通过 group() 方法提取具体部分。
例子:提取年月日import re
text = "今天是2024-04-05"
pattern = r'(\d{4})-(\d{2})-(\d{2})'
match_obj = re.match(pattern, text)
if match_obj:
print("年:", match_obj.group(1)) # 2024
print("月:", match_obj.group(2)) # 04
print("日:", match_obj.group(3)) # 05
match vs search 的区别
re.match() 只从字符串开头匹配,而 re.search() 会扫描整个字符串,找到第一个匹配项即可。
对比示例:import re
text = "say hello"
print(re.match(r'hello', text)) # None
print(re.search(r'hello', text)) # 匹配成功
如果你不确定模式是否在开头,建议使用
re.search()。如果明确要验证整个字符串格式,可用
re.fullmatch()。
常见标志(flags)参数
第三个参数 flags 可改变匹配行为:
- re.IGNORECASE 或 re.I:忽略大小写
- re.MULTILINE 或 re.M:多行模式,^ 和 $ 匹配每行开头结尾
- re.DOTALL 或 re.S:使 . 匹配包括换行符在内的所有字符
result = re.match(r'hello', 'Hello World', re.IGNORECASE)
if result:
print("匹配成功")
基本上就这些。掌握 re.match() 的使用,关键是理解正则表达式的基本语法和匹配机制。实际开发中常用于数据校验、文本解析等场景。不复杂但容易忽略细节,比如开头匹配特性。










