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

Python如何用Regex/re正则提取字符串最后一对括号内的内容

实现思路

核心利用正则贪婪匹配特性+题目给出的固定前提:所有待处理字符串均以目标括号的闭合符)结尾,不需要写复杂的递归嵌套匹配规则,只要锚定字符串末尾,让贪婪通配符自动定位到最后一对最外层括号的起始位置即可。

可直接运行的代码
import re

possible_strings = [
    "some text (and words) more text (and words)",
    "textrighthere(with some more)",
    "little trickier (this time) with (all of (the)(values))"
]

# 正则规则:匹配到末尾的最外层括号,提取内部内容
# re.DOTALL 让.可以匹配换行符,兼容括号内有换行的场景
extractor = re.compile(r'.*\((.*)\)$', re.DOTALL)
output = [extractor.match(s).group(1) for s in possible_strings]

print(output)
# 运行结果:['and words', 'with some more', 'all of (the)(values)']
规则解释
  • .*:贪婪匹配任意长度的前缀内容,会尽可能向后吞噬字符,直到剩余部分刚好满足后续匹配规则,自动定位到最后一个最外层左括号(的位置
  • \(:匹配定位到的最外层左括号
  • (.*):捕获组,匹配括号内部的所有内容(包括内部嵌套的括号)
  • \)$:锚定字符串末尾的右括号,确保匹配的是整串最后一个闭合括号,不会误匹配中间的括号对
异常兼容处理

如果输入可能存在不符合前提的异常字符串(比如末尾不是括号、括号未闭合),可以加判断避免报错:

def get_last_bracket_content(s: str):
    match_res = extractor.match(s)
    return match_res.group(1) if match_res else None

如果没有「字符串以括号结尾」的前提、需要处理任意位置的最后一个嵌套括号,标准库re不支持递归匹配,需要换用第三方regex库实现递归规则,但当前题目场景下上述简单写法效率更高、可读性更好。

内容的提问来源于stack exchange,提问作者T.J. Kolberg

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 02:45:58