如何编写正则匹配含换行的series结构并完成指定data内容替换
解决方案
方案1:正则表达式快速替换(适合临时处理少量文件)
你可以直接用支持多行正则的编辑器(比如VS Code、Sublime Text)完成替换,操作步骤如下:
- 打开目标HTML文件,调出查找替换面板,勾选「正则表达式」选项
- 查找内容填:
("series":\[\{\s*"name":"[^"]*",\s*"data":\[)(,*\]\},)
- 替换内容填:
$10$2
- 点击全部替换即可完成需求。
正则逻辑说明:第一个捕获组匹配到
"data":[为止,第二个捕获组匹配后续的逗号和闭合标识,替换时在两个捕获组中间插入0,完美保留原有的逗号数量和结构。
方案2:Node.js脚本批量处理(适合大量文件、避免正则误匹配)
如果需要处理大量文件,或者担心正则误匹配其他内容,可以写简单的JS脚本解析修改配置:
const fs = require('fs'); const path = require('path'); // 替换你要处理的HTML文件路径 const filePath = path.resolve(__dirname, '你的目标文件.html'); const content = fs.readFileSync(filePath, 'utf8'); // 匹配所有图表配置 const result = content.replace(/var options = ({.*?});/gs, (match, optionsStr) => { try { const options = JSON.parse(optionsStr); // 仅修改每个series数组第一个元素的data if (options.series?.length && options.series[0].data) { options.series[0].data[0] = 0; } return `var options = ${JSON.stringify(options, null, 2)};`; } catch (e) { // 解析失败直接返回原内容避免损坏 return match; } }); // 保存修改后的文件 fs.writeFileSync(filePath, result, 'utf8');
运行脚本前需要安装Node.js,把脚本保存为fix-chart.js,和目标HTML放在同一目录,执行node fix-chart.js即可完成修改。
内容的提问来源于stack exchange,提问作者n8.
相关产品推荐
相关产品推荐

