发布时间:2026/8/21 14:07:28
进阶实战:ad结构正则组合操作符详解(x/y/g/v/s/i/a/c/d) 进阶实战ad结构正则组合操作符详解x/y/g/v/s/i/a/c/d【免费下载链接】adan adaptable text editor项目地址: https://gitcode.com/gh_mirrors/ad5/adad 文本编辑器结构正则的核心概念对于刚接触ad 文本编辑器的普通用户来说命令模式下的Edit表达式可能看起来像一条普通的 sed 替换命令但实际上它背后是一套完整的结构正则structural regex引擎。ad 借鉴了 Plan 9 系列编辑器的设计哲学将查找和编辑从单条表达式中解放出来允许你像写程序一样组合操作符一层层钻取文本结构。这篇文章将用最通俗的语言带你掌握 ad 结构正则中最常用的 9 个组合操作符x / y / g / v / s / i / a / c / d让你从会替换升级为会编程式地改文本。为什么需要结构正则而不是普通正则普通正则表达式擅长匹配一段连续文本但面对先按段落切分再在每个段落里找函数名最后只保留返回 Result 的函数这类多层任务时就力不从心了。结构正则组合操作符的思路完全不同你不再写一条大而全的正则而是描述一个查找过程——先用一个操作符粗粒度地划定范围再嵌套下一个操作符精确筛选。这套命令语言灵感来源于 Plan 9 文本编辑器 sam在 ad 中由 src/exec/mod.rs 模块负责解析与执行整个语法模型可以理解为操作符 正则 模板的自由组合。8 个操作符一图速查操作符含义一句话记忆x/re/遍历每个匹配选中所有匹配项y/re/遍历匹配之间的区域按正则切段g/re/过滤保留匹配只对命中的动手v/re/过滤剔除匹配只对没命中的动手i/template/在每个匹配前插入前缀a/template/在每个匹配后插入后缀c/template/用模板替换匹配替换s/re/template/替换等价于x/re/ c/template/快捷替换d删除匹配删除其中d是唯一不需要参数的无参操作符也是组合操作符语法里最特殊的一员——它在源码解析时被单独允许为无参数标签见 src/exec/mod.rs。逐个拆解每个操作符怎么用x/re/—— 遍历匹配结构正则的基石x是整套组合操作符体系中最核心的动作它在当前选区ad 里叫 dot范围内反复查找正则re每命中一次就执行嵌套在后面的动作。用官方教程里的例子Edit , x/mouse/ c/clicky thing/意思就是把所有 mouse 改成 clicky thing。注意s/re/template/其实是它的语法糖等价于x/re/ c/template/。y/re/—— 在匹配之间游走实现切分y与x相反它不选中匹配本身而是在相邻两个匹配之间的区域上执行动作。典型用途是按空行切分段落Edit 14,24 y/\n\n/ x/*occupation: programmer*/ x/name: (.*)/ p/{1} is a programmer\n/这条命令先按\n\n把文本切成若干块在每块里找 occupation 为 programmer 的段落再提取 name 字段并打印。这就是结构正则组合操作符的威力——一条命令完成切块→筛选→提取→输出四步。g/re/与v/re/—— 过滤开关gkeep只在匹配正则时执行后续动作vreject则相反。看项目自带的实战脚本 examples/scripts/result_fns.adx/fn*?\{/ # 选中所有函数签名 g/-.*Result.*\{/ # 只保留返回 Result 的函数 x/fn (\w)*?- (.*?) \{/ # 提取函数名与返回类型 p/({FILENAME}) {1} returns {2}\n/ # 按模板输出这个脚本能一键列出整个文件中返回 Result 的所有函数g在这里起到了filter的作用。i/template/、a/template/、c/template/—— 三种写入动作i在每个匹配之前插入模板文本a在每个匹配之后插入模板文本c用模板替换整个匹配模板里可以使用{1}、{2}引用正则捕获组甚至支持{FILENAME}、{ROW}、{COL}这类内置变量这在 examples/scripts/fancy_impl_blocks.ad 中有完整演示。d—— 一键删除d直接删除当前匹配是处理删掉所有空行这类需求的最快方式。由于它是无参操作符在组合表达式中常常作为链条的终点动作出现。进阶实战嵌套组合打造代码分析器理解了单个操作符后真正的乐趣在于嵌套。来看项目自带的 examples/scripts/impl_blocks.ad它用 20 行不到的脚本扫描整个 Rust 文件的 impl 块x/^(?:impl.*?|impl).*? (\w)*?^\}/ # 选定所有顶层 impl 块 { p/impl {1}\n/; # 打印 impl 的目标类型 x/fn*? (\w)/ p/ {1}\n/; # 嵌套遍历打印缩进的函数名 }而 examples/scripts/fancy_impl_blocks.ad 更进一步同时用g、v作为互斥守卫区分有返回类型和无返回类型两种情况还能识别mut self方法——这已经是小型静态分析工具的水平了。组合操作符的两种运行方式这些结构正则组合操作符既可以在 ad 编辑器内通过Edit命令实时执行也支持无界面的脚本模式docs/tour/structural-regex2ad -e $EDIT_SCRIPT # 直接传脚本字符串 ad -f script.ad file.txt # 从文件读取脚本并应用到目标文件也就是说你可以把上面的分析脚本保存为.ad文件批量处理任意源码文件实现命令行级的结构化文本处理。结语从替换到编程式编辑x / y / g / v / s / i / a / c / d这 9 个组合操作符看似简单但通过嵌套和分组它们足以表达大多数复杂的结构化文本编辑需求。建议你从 docs/tour/structural-regex 的入门示例开始再对照 examples/scripts/ 下的实战脚本逐行拆解很快你就能写出属于自己的结构正则处理管道。记住 ad 的核心哲学文本不只是被编辑的素材它本身就是可以执行的程序。【免费下载链接】adan adaptable text editor项目地址: https://gitcode.com/gh_mirrors/ad5/ad创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

2026/8/21 14:07:28

Co-Harness:协同进化框架如何优化LLM智能体的任务性能

1. 项目概述:当“缰绳”与“马”一同进化 最近在LLM智能体(LLM Agents)的圈子里,一个叫“Co-Harness”的概念开始被频繁讨论。乍一看这个标题——“Co-Harness: Co-Evolving Harnesses and Model Weights for LLM Agents”——可能…

2026/8/21 14:07:28

Loihi 2单神经元实现逻辑推理:神经形态计算的硬件原生算法突破

如果你关注过神经形态计算,可能会觉得它离实际应用还很远——功耗低但精度不够,适合脉冲神经网络却难以处理传统AI任务。但最近一项研究可能会改变这个印象:研究人员在英特尔Loihi 2神经形态芯片上,仅用 1个神经元 就实现了需要…

2026/8/21 14:07:28

SpringBoot+Vue新能源汽车充电系统:从零部署到功能测试全指南

这次我们来看一个基于 SpringBoot Vue 的前后端分离项目:新能源汽车充电服务系统。这是一个典型的毕业设计/毕设项目,提供了完整的源码、文档和讲解,非常适合计算机相关专业的学生进行学习、二次开发或直接作为毕业设计成果。对于开发者而言…

2026/8/21 15:22:40

RFID技术JY-L601D赋能精准喂养:多重家庭智能管理革命

RFID(射频识别)技术通过智能化改造宠物喂养,实现了从精准投喂到溯源管理的多重革命。研发宠物喂食器RFID模块,实现宠物精准喂养。 一、多宠家庭精准喂养:告别“食物大战” 1. 身份识别与个性化投喂 RFID模块通过识别宠…

2026/8/21 15:22:40

效率工具第一版怎样控制链路复杂度

效率工具第一版怎样控制链路复杂度 在研发 AI 辅助工具(例如自动化研发周报生成、代码日志提取与 Bug 追踪工具)时,选型阶段容易掉入技术过度设计的误区。部分团队在 MVP(Minimum Viable Product,首个最小可行产品&…

2026/8/21 13:13:49

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/20 20:11:18

工业传感器与变送器详解:序章 从物理世界到工业数据

序章 从物理世界到工业数据 ——重新认识工业传感器与变送器 工业自动化系统正变得日益复杂。今天的工业现场早已不是简单的控制回路,而是由多层技术共同构成的立体体系:PLC、DCS、SCADA、MES、工业互联网、边缘计算与人工智能。控制系统可以执行复杂算法,工业网络可以实现…

2026/8/21 0:03:13

Linux命令-uucico(UUCP传输程序)

Linux命令-uucico(UUCP传输程序) 🔰简介UUCP 体系简介 📖语法⚙️选项配置文件 💡示例示例 1:基本传输操作示例 2:主模式与从模式示例 3:调试与故障排查示例 4:UUCP 配置…

2026/8/21 0:03:13

Linux命令-uupick(UUCP文件接收工具)

Linux命令-uupick(UUCP文件接收工具)🔰简介uupick 在 UUCP 传输链中的位置📖语法⚙️选项交互命令💡示例示例 1:基本接收操作示例 2:仅处理来自特定系统的文件示例 3:完整 UUCP 文件…

2026/8/20 8:35:23

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/20 9:15:29

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/21 0:31:27

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…