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

如何用Python正则表达式提取指定代码中的键值对?

用Python正则提取Jinja2风格set语句的键值对

针对你要解析的{% set name = "testDB" %}这类文本,下面是能精准提取目标键值对的正则方案:

正则模式说明

使用这个正则表达式可以匹配并捕获所需内容:

{%\s*(set\s+\w+)\s*=\s*"([^"]+)"\s*%}

各部分作用:

  • {%\s*:匹配开头的{%及后续任意空白字符(兼容空格、制表符)
  • (set\s+\w+):第一个捕获组,抓取set加变量名的组合(也就是你要的key)
  • \s*=\s*:匹配等号前后的任意空白,兼容赋值语句的格式差异
  • "([^"]+)":第二个捕获组,抓取双引号内的所有非引号字符(也就是你要的value)
  • \s*%}:匹配结尾的%}及前面的任意空白

完整Python代码示例

import re

text1 = '{% set name = "testDB" %}'
text2 = '{% set version = "0.0.1" %}'

# 定义正则模式
pattern = r'{%\s*(set\s+\w+)\s*=\s*"([^"]+)"\s*%}'

# 解析text1
match1 = re.fullmatch(pattern, text1)
if match1:
    key_text1 = match1.group(1)
    value_text1 = match1.group(2)
    print(f"key_text1 = {key_text1}, value_text1 = {value_text1}")
else:
    print("No match found for text1")

# 解析text2
match2 = re.fullmatch(pattern, text2)
if match2:
    key_text2 = match2.group(1)
    value_text2 = match2.group(2)
    print(f"key_text2 = {key_text2}, value_text2 = {value_text2}")
else:
    print("No match found for text2")

这里用re.fullmatch确保整个字符串完全匹配正则模式,避免部分匹配导致的误判。

运行结果

执行后会输出:

key_text1 = set name, value_text1 = testDB
key_text2 = set version, value_text2 = 0.0.1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 18:22:41