如何实现不同标题下运用不同的正则替换规则

运用regex pipeline插件可实现整篇文档的替换,那如果想在不同标题下运用不同正则,则只能分别选中各标题下内容分别应用不同正则。能否通过templaterjs一步完成
本人代码小白,问了几家ai没能得到满足需求的代码,大佬们能帮忙写个代码吗。
下面是我问ai的其中一个代码,仅能对第一个标题正则替换,而且还会把原文复制成两份
<%*
// 获取文件内容
let fileContent = tp.file.content;

// 获取标题1部分的内容
let 1Section = fileContent.match(/(?<=^## 标题1[\r\n]+)[\s\S]?(?=\n##|$)/m)?.[0];
if (1Section) {
const 1ReplaceMap = {
“xggcg”: “1”,
“dgfjgj”: “2”,
“gxchh”: “3”
};
1Section = 1Section.replace(
new RegExp(Object.keys(1ReplaceMap).join(“|”), “g”),
match => 1ReplaceMap[match]
);
fileContent = fileContent.replace(/(?<=^## 标题1[\r\n]+)[\s\S]
?(?=\n##|$)/m, 1Section);
}

// 获取标题2部分的内容
let 2Section = fileContent.match(/(?<=^## 标题2[\r\n]+)[\s\S]?(?=\n##|$)/m)?.[0];
if (2Section) {
const 2ReplaceMap = {
“dvjshjs”: “JG”,
“ytznue”: “ZJ”
“xggcg”: “c”,
“dgfjgj”: “d”,
“gxchh”: “e”
};
2Section = 2Section.replace(
new RegExp(Object.keys(2ReplaceMap).join(“|”), “g”),
match => 2ReplaceMap[match]
);
fileContent = fileContent.replace(/(?<=^## 标题2[\r\n]+)[\s\S]
?(?=\n##|$)/m, 2Section);
}

// 更新最终替换后的内容
tR = fileContent;
%>

先解析出文档的结构,然后替换,再合并。

要不你详细说一下你想怎么替换,我给你写一个

我想要一个可运行的模板框架,用templaterjs函数查找到某标题下内容,然后处理这部分内容,再继续查找另一个标题下内容……
最后输出
因为文本查找替换的正则会因为需求而不断更新,不同文件也需要不同正则。但框架是不变的,有了这个可运行的框架,我就可以把正则丢给ai,让他写入templaterjs代码

1 个赞

下面是一个具体的需求示例

在各个标题下执行以下列正则

标题1

中文符号→英文符号:
“(“gm->”(”
“)“gm->”)”
“/“gm->”‖”
“+"gm->”+"
“|"gm->”|"
(?<![)[(?![|(.*]())“gm->”〈"
“(?<!])](?!]|()“gm->”〉”
“-“gm->”-”
“>"gm->”>"
“<"gm->”<"
“~"gm->”~"
“="gm->”="

标题2

句子换行:
"(?<![a-zA-Z])(。|;|;|?|?)(?![a-zA-Z]|$)“gm->”$1
"

标题3

标题降级:
"# “gm->” "

标题4

上标符号
"^0"gm->“⁰”
"^1"gm->“¹”
"^2"gm->“²”
"^3"gm->“³”
"^4"gm->“⁴”
"^5"gm->“⁵”
"^6"gm->“⁶”
"^7"gm->“⁷”
"^8"gm->“⁸”
"^9"gm->“⁹”

1 个赞