Python 3中re.search(r'pattern',string)与re.search(b'pattern',string)的区别及文档查询
Python 3中re.search两种调用方式的区别
核心差异总结:
参数类型要求不同
re.search(r'pattern', string):第一个参数是str类型(原始字符串语法r''仅用于避免转义,本质仍为字符串),要求第二个参数string必须同为str类型,用于匹配Unicode文本内容。re.search(b'pattern', string):第一个参数是bytes类型,要求第二个参数string必须是bytes类型,用于匹配原始字节序列(比如二进制文件内容、网络传输的字节数据)。
匹配行为不同
- str模式下,正则元字符(如
\w、\s、.)基于Unicode规则生效。例如\w会匹配中文、日文等非ASCII的字母数字字符,.匹配任意Unicode字符(除非指定re.DOTALL)。 - bytes模式下,所有匹配逻辑基于原始字节值。例如
\w仅匹配ASCII范围内的字母数字(字节值0x41-0x5A、0x61-0x7A、0x30-0x39),.匹配任意单个字节。
- str模式下,正则元字符(如
返回结果类型不同
- str模式匹配成功后,
Match对象的group()、groups()等方法返回str类型结果。 - bytes模式匹配成功后,上述方法返回
bytes类型结果。
- str模式匹配成功后,
官方文档位置
Python标准库的re模块文档中,有专门章节说明字符串与字节串在正则匹配中的区别,可在Python官方文档的re模块章节里查找"Strings and Bytes"相关内容。
内容的提问来源于stack exchange,提问作者NeilG
相关产品推荐
相关产品推荐

