正则匹配嵌套标签内容思路
正则匹配嵌套标签内容百度找了几个嵌套正则都无法满足我的要求。示例字符串原使用正则#if.*?\/#if #if #if aaa /#if ccc /#ifbbb#ifddd/#if需要替换#if/#if标签内容为空最终效果应只保留bbb因为bbb没有被标签包含匹配思路使用单个标签匹配逐级替换内容后再重新匹配。主要判断在中间过程中不包含标签头的内容。不包含头就不需要判断标签尾。html应该标签类似同理可将子标签替换为{div1}、{div2}等形式需要恢复时再进行内容还原实现过程此方案虽然能够实现最终留下bbb但不支持#if中包含符号如12。不符合匹配思路 #if[^#if]*[^/#if]*/#if百度之后使用新写法参考地址https://blog.csdn.net/xiiii/article/details/89450341最终正则即在原匹配单个标签正则中增加不包含标签头的判断#if((?!#if).)*?\/#if \1代表第一个匹配内容这样单标签匹配只需要改头尾就行 (#if)((?!\1).)*?/#if参考示例代码let oldSqlCode #if #if aaa /#if ccc /#ifbbb#ifddd/#if; //2024.03.08 格式化之前注释不可识别内容 //需要注释最外层的#if标签 // console.log(oldSqlCode:,oldSqlCode) let newSqlCode oldSqlCode; let ifPattern /(#if)((?!\1).)*?\/#if/gim; let parentIndex 0; let tempIfs new Map(); let matches; while(ifPattern.test(newSqlCode)){//嵌套一次多循环一次保证#if标签正确替换为空 matches newSqlCode.match(ifPattern); // console.log(matches:,matches) parentIndex; for (let i 0; i matches.length; i) { let tempKey if-parentIndex-(i1); tempIfs.set(tempKey,matches[i]); newSqlCode newSqlCode.replaceAll(matches[i],tempKey);//替换if标签内容 } // console.log(newSqlCode:,newSqlCode) } // console.log(tempIfs:,tempIfs) //先按if-x-x格式替换为/*if-x-x*/注释格式后再还原内容 // let explanatory newSqlCode newSqlCode.replaceAll(/(if-\d-\d)/gim,/*\$1*/);//替换if标签内容 //if重复格式化会导致注释嵌套替换重复注释只保留一个 newSqlCode newSqlCode.replaceAll(/*/*,/*).replaceAll(*/*/,*/); // console.log(newSqlCode:,newSqlCode) //需要倒序遍历还原如if-2-1中会包含if-1-x // console.log(tempIfs.size-1) for (let i tempIfs.size-1; i 0; i--) { let key Array.from(tempIfs.keys())[i]; // console.log(key:,key) let val tempIfs.get(key); // console.log(key:val); //开始还原操作 newSqlCode newSqlCode.replaceAll(key,val);//替换if标签内容 } // console.log(最终注释结果newSqlCode:,newSqlCode) // 调用格式化控件将关键字转大写 newSqlCode format(newSqlCode,{language:dsType,uppercase: true}); newSqlCode newSqlCode.replaceAll({ reorder },\n/*{reorder}*/) .replaceAll(/where(\n.*)1\s*\s*1/gim, where 1 1\n) .replaceAll(\n\n,\n);// where 1 1 格式化调整

相关新闻

基于PLC的校园照明控制系统设计与实践全解析

基于PLC的校园照明控制系统设计与实践全解析

又到毕业设计季,在众多电气自动化专业的选题里,"基于PLC的校园照明控制系统"绝对算得上经典中的经典。这个题目看着不难,但真正做起来却能串起一整套完整的技术链路:传感器信号采集、PLC点位分配、梯形图逻辑设计、电气…

2026/10/10 8:04:36 阅读更多 →
API自动化测试质量中枢:从pytest鉴权到LLM接口实践

API自动化测试质量中枢:从pytest鉴权到LLM接口实践

先说个真实场景。你负责的项目上线前一天,运营反馈登录功能大面积报错,点开日志一看——unexpected status 401 unauthorized: incorrect api key provided。再往前追,发现是下游服务换了一套密钥,但配置中心里还留着旧值。这种问…

2026/10/10 8:03:35 阅读更多 →
PCA9422+STM32F746ZG构建硬件级电源管理方案

PCA9422+STM32F746ZG构建硬件级电源管理方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 8:03:35 阅读更多 →

最新新闻

Steve Brunton | Reinforcement Learning | 笔记 | Lecture 3 | 深度强化学习在流体动力学与控制中的应用

Steve Brunton | Reinforcement Learning | 笔记 | Lecture 3 | 深度强化学习在流体动力学与控制中的应用

目录前言1. 引言2. 强化学习框架回顾3. 流体动力学中的应用分类4. 鱼群游动研究5. 强化学习加速计算6. 综述与常用算法7. 流动控制8. 非稳态流体环境中的飞行控制9. 总结结语参考前言 学习 Steven Brunton 讲授的强化学习入门概述视频,本篇文章记录第三讲&#xff1…

2026/10/10 8:54:30 阅读更多 →
Steve Brunton | Reinforcement Learning | 笔记 | Lecture 4 | 强化学习系列:方法概览

Steve Brunton | Reinforcement Learning | 笔记 | Lecture 4 | 强化学习系列:方法概览

目录前言1. 引言2. 强化学习核心概念回顾3. 模型驱动强化学习4. 模型无关强化学习5. 深度强化学习方法6. 总结与展望结语参考前言 学习 Steven Brunton 讲授的强化学习入门概述视频,本篇文章记录第四讲:强化学习系列:方法概览,记录…

2026/10/10 8:54:30 阅读更多 →
Rocket.Chat 的 `@rocket.chat/peggy-loader`:在 Webpack 构建中把 Peggy 语法文件编译为 ES 模块解析器

Rocket.Chat 的 `@rocket.chat/peggy-loader`:在 Webpack 构建中把 Peggy 语法文件编译为 ES 模块解析器

即时通讯后端前端 【免费下载链接】Rocket.Chat The Secure CommsOS™ for mission-critical operations 项目地址: https://gitcode.com/GitHub_Trending/ro/Rocket.Chat 点击查看 免费下载 rocket.chat/peggy-loader 是 Rocket.Chat 官方维护的 Peggy&#xff08…

2026/10/10 8:54:30 阅读更多 →
ComfyUI本地部署与工作流搭建:从零跑通AI绘画环境

ComfyUI本地部署与工作流搭建:从零跑通AI绘画环境

1. 为什么本地跑图这件事值得认真对待如果你最近才开始接触AI绘画,大概率会经历这样一个过程:先用在线工具生成几张图,觉得挺新鲜,然后发现免费额度用完了,或者想调一个特定的姿势、换一个特定的画风,在线工…

2026/10/10 8:54:30 阅读更多 →
水流量示意图制作全指南:类型划分、工具选型与模板复用

水流量示意图制作全指南:类型划分、工具选型与模板复用

干过给排水、环保、水利项目的人都有体会:方案汇报时,一张干净的水流量示意图,比满屏数据表格更能说服人。无论是污水厂提标改造的工艺流程图,还是城市供水管网的水量分配图,甚至是科研论文里的测流时序曲线&#xff0…

2026/10/10 8:54:30 阅读更多 →
KV Cache Offloading 原理详解:GLM5.2 如何用 CPU DRAM 突破 1M 长上下文 HBM 内存墙

KV Cache Offloading 原理详解:GLM5.2 如何用 CPU DRAM 突破 1M 长上下文 HBM 内存墙

KV Cache Offloading 原理详解:GLM5.2 如何用 CPU DRAM 突破 1M 长上下文 HBM 内存墙 【免费下载链接】GLM5.2-KV-Offloading-FusedSfaOverlap 项目地址: https://ai.gitcode.com/Ascend-SACT/GLM5.2-KV-Offloading-FusedSfaOverlap 在 GLM5.2 长文本推理场…

2026/10/10 8:53:28 阅读更多 →

日新闻

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

1. 从“卫星轨道分类”这个标题说起:为什么值得花时间搞懂第一次接触“卫星轨道分类”这个概念,很多人会觉得它离自己很远——不就是天上的星星怎么转吗?但如果你正在做航天任务规划、遥感数据接收、星座设计,甚至只是准备一场航天…

2026/10/10 0:00:39 阅读更多 →
Spring AOP 核心原理与实战:从概念到日志切面落地

Spring AOP 核心原理与实战:从概念到日志切面落地

1. 从一个真实痛点说起:为什么你的代码里到处都是重复逻辑刚入行那会儿,我写过一个用户管理模块,注册、登录、改密码、注销四个接口。每个接口里都塞了几乎一样的日志打印、参数校验、事务开启和提交。当时觉得没什么,能跑就行。直…

2026/10/10 0:00:40 阅读更多 →
Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

简介:这是一套面向计算机相关专业学生与项目实战学习者的Python数据采集与分析可视化完整项目,以Boss直聘岗位数据为对象,适合用作毕业设计、课程设计或期末大作业。资源包共38个文件,约246KB,以13个py源码文件为核心&…

2026/10/10 0:00:40 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:32 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 1:36:08 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 10:11:06 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 5:23:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 6:17:20 阅读更多 →