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

Python正则如何匹配带xyz前缀的括号内封装的JSON内容?

匹配失败原因
  • 默认状态下正则表达式的.元字符不会匹配换行符,若你的JSON内容存在换行,.*?会在碰到第一个换行时终止匹配,无法匹配到后续的),所以返回空结果。
  • 就算JSON是单行结构,若JSON字符串内部存在)字符,惰性匹配也会提前终止,导致提取的JSON内容不完整。
解决方法

方法一:正则适配(适合结构简单的场景)

给正则添加re.S(等价于re.DOTALL)标志位,让.可以匹配换行符,同时通过捕获组直接提取括号内的JSON内容:

import re
json_str_list = re.findall(r'xyz\((.*?)\)', text_file, flags=re.S)

方法二:按行定位(稳定性更高)

因为你的数据有固定的前置行规则,按行遍历定位完全避免正则匹配的异常问题,适配所有合法JSON场景:

import json

parsed_data = []
lines = text_file.splitlines()
for idx in range(len(lines) - 1):
    if lines[idx].strip() == "abcdefg":
        target_line = lines[idx + 1].strip()
        if target_line.startswith("xyz(") and target_line.endswith(")"):
            json_str = target_line[4:-1]
            parsed_data.append(json.loads(json_str))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 11:06:05