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

如何提取特定字符串内的内容?以MatchesBlock中的JSON为例

提取MatchesBlock内部内容及JSON数据的方案

嘿,这个需求很常见!要从你给出的字符串里提取MatchesBlock的内部内容,尤其是那串嵌套的JSON数据,咱们可以用正则表达式配合编程语言来轻松搞定,下面给你分场景的具体实现:

一、用Python提取(适合后端/脚本处理)

首先咱们先分析字符串结构:MatchesBlock的参数是三个,前两个是单引号包裹的字符串,第三个就是咱们要的JSON对象。我们可以用正则精准捕获目标内容,再解析JSON。

代码示例

import re
import json

# 你的目标字符串
test_str = "var block = new MatchesBlock('page_competition_1_block_competition_matches_summary_5', 'block_competition_matches_summary', {\"page\":0,\"bookmaker_urls\":{\"13\":[{\"link\":\"http:\\/\\/www.bet365.com\\/home\\/?affiliate=365_178981\",\"name\":\"Bet 365\"}]},\"block_service_id\":\"competition_summary_block_competitionmatchessummary\",\"round_id\":42011,\"outgroup\":false,\"view\":2,\"competition_id\":13});"

# 1. 提取MatchesBlock的全部内部参数
block_content_pattern = r"new MatchesBlock\((.*?)\);"
block_content = re.search(block_content_pattern, test_str, re.DOTALL).group(1)
print("✅ MatchesBlock内部完整内容:")
print(block_content)

# 2. 精准提取第三个参数的JSON数据
json_pattern = r"new MatchesBlock\('[^']+', '[^']+', (.*?)\);"
raw_json_str = re.search(json_pattern, test_str, re.DOTALL).group(1)
# 处理JSON里的转义斜杠(原字符串里的\\/需要换成/才能被正确解析)
clean_json_str = raw_json_str.replace('\\/', '/')
# 解析成Python字典
parsed_json = json.loads(clean_json_str)
print("\n✅ 解析后的JSON数据:")
print(parsed_json)

关键说明

  • re.DOTALL:让正则里的.可以匹配换行符(虽然你的字符串是单行,但加上更稳妥,兼容多行场景)
  • 替换\\/为/:原字符串里的URL斜杠被转义了,必须处理后才能被json.loads正确解析

二、用JavaScript提取(适合浏览器控制台/前端场景)

如果是在浏览器里处理这段字符串,比如从页面源码中提取,咱们可以用类似的正则思路,配合JSON.parse来解析:

代码示例

// 目标字符串
const testStr = "var block = new MatchesBlock('page_competition_1_block_competition_matches_summary_5', 'block_competition_matches_summary', {\"page\":0,\"bookmaker_urls\":{\"13\":[{\"link\":\"http:\\/\\/www.bet365.com\\/home\\/?affiliate=365_178981\",\"name\":\"Bet 365\"}]},\"block_service_id\":\"competition_summary_block_competitionmatchessummary\",\"round_id\":42011,\"outgroup\":false,\"view\":2,\"competition_id\":13});";

// 提取JSON部分
const jsonMatch = testStr.match(/new MatchesBlock\('[^']+', '[^']+', (.*?)\);/s)[1];
// 处理转义斜杠并解析JSON
const parsedJson = JSON.parse(jsonMatch.replace(/\\\//g, '/'));
console.log("✅ 解析后的JSON数据:", parsedJson);

关键说明

  • 正则的s修饰符:和Python的re.DOTALL作用一致,确保.能匹配换行
  • replace(/\\\//g, '/'):全局替换转义斜杠,避免JSON解析报错

三、注意事项

如果你的字符串里的参数存在单引号嵌套(比如前两个单引号参数里包含单引号),那上面的正则会失效,这种情况下建议用专门的JavaScript语法解析器(比如acorn)来处理,不过绝大多数场景下,上面的正则方案已经足够好用了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:44:26