You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python提取括号内数字失败求助:re.search返回None

问题原因及解决办法

核心原因1:Python字符串转义导致正则表达式失效

你写的正则模式 '\(\d{1,}\)' 是普通Python字符串,Python会先解析其中的反斜杠。由于 \( 不是Python认可的转义序列,Python会直接丢弃反斜杠,最终传给正则引擎的模式变成了 '(\d{1,})'——这表示匹配一个包含数字的捕获组,而非字面意义上的括号包裹数字。

解决方法

使用原始字符串(前缀加 r)保留反斜杠,让正则引擎正确识别字面括号:

import re    
print(re.search(r'\(\d{1,}\)', "b'   1. Population, 2016 (1)'"))

或者手动双重转义反斜杠(一层给Python,一层给正则):

import re    
print(re.search('\\(\\d{1,}\\)', "b'   1. Population, 2016 (1)'"))

核心原因2:目标是字节串但模式是普通字符串

如果你的实际目标数据是字节串(比如 b' 1. Population, 2016 (1)',而非带引号的字符串表示 "b'...'"),普通字符串模式无法匹配字节串,必须保证模式和目标的类型一致(同为str或同为bytes)。

解决方法

使用字节模式(前缀加 rb):

import re    
print(re.search(rb'\(\d{1,}\)', b'   1. Population, 2016 (1)'))

为什么regex101上验证有效

regex101默认使用原始正则语法,\(\d{1,}\) 会被直接解析为匹配字面括号包裹数字,无需考虑Python的字符串转义规则,所以能得到预期结果。

内容的提问来源于stack exchange,提问作者confused_programmer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 03:45:33