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

Python re模块中如何匹配字面量括号?改写正则遇阻求助

解决Python正则匹配字面量括号的问题

你要匹配带字面量括号的内容(比如- (2024 Remaster)),之前的写法存在两个核心问题:

  • 第一种尝试里,结尾的)未转义,正则引擎会把它当成分组的结束符,而非字面量括号,导致匹配失败。
  • 使用re.escape时,仅处理了开头部分,结尾的)没做转义,导致这部分仍被识别为正则语法而非字面量。

给你两种可行的解决写法:

方法一:直接在原始字符串中转义所有字面量括号

把需要匹配的字面量(和)用\转义,注意首尾的括号都要转义,中间用于捕获的分组括号保持原样:

r' - \((\d{4}) Remaster\)'

解释:

  • \( 和 \) 明确告诉正则引擎这是要匹配的字面量括号
  • (\d{4}) 作为捕获年份的分组,正常保留正则语法即可

方法二:用re.escape处理字面量部分,拼接正则分组

把固定的字面量部分用re.escape转义,再和正则分组部分拼接,确保所有字面量特殊字符都被正确转义:

re.escape(' - (') + r'(\d{4}) Remaster' + re.escape(')')

re.escape会自动把(和)转成\(和\),中间的(\d{4})作为正则语法保留,不会被转义。

测试时,比如对字符串"Foo - (2020 Remaster) Bar",两种写法都能正确捕获到2020。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 07:42:40