Ahk v2 正则表达式删除片段语句

板块:网站服务 | 回复:0 | 浏览:404 | 发布时间:2025-12-27 09:51:21

yuanscn 2025-12-27 09:51:21 楼主
这是一个 AutoHotkey v2 版本的正则表达式,用来删除 HTML 文本中 和 标签之间的所有内容(包括跨多行的情况)。
实现思路
要实现跨多行匹配并删除 和 之间的内容,关键是:
使用正则的单行模式(s 修饰符)让 . 匹配包括换行符在内的所有字符
匹配 开头、 结尾,中间匹配任意内容(非贪婪模式)
保留 和 标签本身,只删除中间内容

代码关键说明
正则表达式解析:
(?si):正则修饰符,s = 单行模式(. 匹配换行),i = 忽略大小写
():捕获组 1,匹配 标签(保留)
.*?:非贪婪匹配任意字符(包括换行),确保只匹配到最近的
():捕获组 2,匹配 标签(保留)
替换为 $1$2:只保留 和 标签,删除中间内容

公式:(?si)().*?()
替换为:$1$2
如果不保留标签,则替换为空。
源程序:
; AHK v2 代码
#Requires AutoHotkey v2.0

; 示例 HTML 文本(跨多行)
htmlText =
(




测试页面



Hello World




)

; 核心正则替换逻辑
; s 修饰符:单行模式(. 匹配换行符)
; i 修饰符:忽略大小写(匹配 、 等)
; \s* 匹配标签前后的空白字符(可选)
newHtmlText := RegExReplace(htmlText, "(?si)().*?()", "$1$2")

; 输出结果
MsgBox("处理前:`n" htmlText "`n`n处理后:`n" newHtmlText)
返回列表