如何用Notepad++正则查找非Markdown代码字符串并添加{~Plain~}前缀
没问题,我来帮你搞定用Notepad++正则处理这个文本的需求!
操作步骤(Notepad++中)
- 打开你的目标文本文件,按下
Ctrl+H调出替换对话框。 - 在查找模式里选择「正则表达式」,并且勾选右下角的「匹配新行」(这个很重要,不然没法处理跨换行的文本块)。
- 在「查找内容」框里粘贴这段正则:
(?!{~[A-Za-z,0-9]+~})(?!{~Plain~})([\s\S]+?)(?=(?:{~[A-Za-z,0-9]+~}|$))
- 在「替换为」框里输入:
{~Plain~}$1
- 点击「全部替换」,搞定!
正则逻辑说明
这个正则专门定位那些不在合法{...}标记内部且还没被{Plain}标记的纯文本:
(?!{~[A-Za-z,0-9]+~}):确保当前位置后面不是合法的Markdown代码标记(比如{Newline}、{Indent,4}这类)(?!{~Plain~}):避免给已经加过{Plain}的文本重复标记([\s\S]+?):非贪婪匹配所有字符(包括换行),把需要标记的纯文本捕获到分组1(?=(?:{~[A-Za-z,0-9]+~}|$)):确保匹配的纯文本后面跟着合法标记或者文本结尾,精准锁定两个标记之间的纯文本块
示例测试效果
原输入文本:
{~Newline~}{~Indent,4~}{~Colour,Blue~} To be or not to be, {~Newline~}{~Indent,6~} {~Colour,Green~} that {~StartItalic~} is {~EndItalic~} the question. {~EndDocument~}
替换后结果:
{~Newline~}{~Indent,4~}{~Colour,Blue~}{~Plain~} To be or not to be, {~Newline~}{~Indent,6~}{~Plain~} {~Colour,Green~}{~Plain~} that {~StartItalic~}{~Plain~} is {~EndItalic~}{~Plain~} the question. {~EndDocument~}
所有纯文本前面都正确加上了{Plain},合法的Markdown代码标记完全保留,完美符合你的需求!
内容的提问来源于stack exchange,提问作者Kapitano
相关产品推荐
相关产品推荐

