实现思路
要实现跨多行匹配并删除 和 之间的内容,关键是:
使用正则的单行模式(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)