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

如何用Python正则表达式匹配identifier{ }内的目标内容?

解决正则匹配嵌套大括号的问题

你的问题出在目标内容里包含嵌套的{{var}}结构,普通非贪婪匹配会在遇到第一个}时就终止,无法匹配到identifier{}对应的外层闭合大括号。

正确的正则表达式

在Python中,可以利用递归正则处理嵌套大括号结构,精准提取identifier{}内部的完整内容:

import re

content = "identifier{ {{var1}} rest of the content} outer content identifier{ {{var2}} another content} identifier{ content with no vars }"
pattern = r'identifier\{((?:[^{}]|(\{(?:[^{}]|(?2))*\}))*)\}'
result = [match[0] for match in re.findall(pattern, content)]
print(result)

正则规则解释

  • identifier\{:匹配固定前缀identifier{
  • ((?:[^{}]|(\{(?:[^{}]|(?2))*\}))*):核心捕获组,用于提取目标内容
    • [^{}]:匹配非大括号的任意字符
    • (\{(?:[^{}]|(?2))*\}):递归匹配嵌套的大括号结构,(?2)表示引用第二个捕获组的规则,实现多层嵌套的匹配
  • \}:匹配identifier{}对应的外层闭合大括号

运行后会得到你期望的结果:

["{{var1}} rest of the content", "{{var2}} another content", "content with no vars"]

Python 3.10+ 简化写法

如果使用Python 3.10及以上版本,可使用命名捕获组的递归引用,写法更直观:

pattern = r'identifier\{(?P<content>(?:[^{}]|(?P<nested>\{(?:[^{}]|(?P=nested))*\}))*)\}'
result = re.findall(pattern, content)
# 提取捕获的content部分
result = [item[0] for item in result]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 14:46:04