notepad++正则表达式替换,在匹配文本前插入字符,如何做到?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了notepad++正则表达式替换,在匹配文本前插入字符,如何做到?相关的知识,希望对你有一定的参考价值。

想用Calibre制作电子书,用到markdown语法标记,要求在所有章节标题前插入“##”

例如原文本:
第一章 XXX
替换后为:
##第一章 XXX
在替换窗口“查找目标”里输入
第(一|二|三|四|五|六|七|八|九|十|百|[0-9])+(章)\s+.*
替换结果的表达式应该怎么输入?

参考技术A 查找表达式: 第([一二三四五六七八九十百零〇]+|[0-9]+)章(.+)\s
替换为表达式:##第$1章$2\r追问

正解,谢谢!

另,请问$的具体如何使用?
如果替换目标用:第.*章
最终表达式中通配符的内容应该用什么替代?

追答

$1代表查找表达式中的第一对小括号里面的内容,依次类推。第二对小括号里面的内容就用$2代表。
如果替换目标用:第.*章,表达式应该修改为:第(.*)章
替换为表达式为:第$1章

本回答被提问者和网友采纳

正则表达式在Notepad ++中查找/替换多个文本

我正在努力与一些正则表达式查找/替换..

我想搜索一些术语,当它找到任何一个术语时,它会删除它们所在的行以及下一行。我想要搜索的术语中会有引号和逗号。

这些是典型的搜索词(包括引号):

“文字两个”,BB

“文字三”,AA

“四个文字”,AA

典型文件(将是1000行的长)内容:

#text:0 first="blah" second="TEXT ONE",AA | more text
Line 1
#text:0 first="blah" second="TEXT TWO",BB | more text
Line 2
#text:0 first="blah" second="TEXT THREE",AA | more text
Line 3
#text:0 first="blah" second="TEXT FOUR",BB | more text
Line 4
#text:0 first="blah" second="TEXT THREE",AA | more text
Line 5
#text:0 first="blah" second="TEXT FOUR",AA | more text
Line 2

我希望结果如下:

#text:0 first="blah" second="TEXT ONE",AA | more text
Line 1
#text:0 first="blah" second="TEXT FOUR",BB | more text
Line 4

即任何包含上述3个术语中的任何一行的行将被完全删除 - 以及其后续行。

我试过正则表达式搜索/替换:

找什么:-

.*"TEXT TWO",BB.*\R.*(?:\R|$)|.*"TEXT THREE",AA.*\R.*(?:\R|$)|.*"TEXT FOUR",AA.*\R.*(?:\R|$)

替换为: - (留空)

当我执行'find'和'count'时,它正确地说出了86个匹配。如果我做'替换',它说它已经取代了86个匹配 - 但它实际上已经删除了数千行。困惑......你能帮帮忙吗?我需要一些额外的引用或逃脱字符吗?

答案

如评论中所述,不要检查. matches newline

你也可以简化一下:

^.*(?:”TEXT TWO”,BB|”TEXT THREE”,AA|”TEXT FOUR”,AA).*\R.*(?:\R|$)

以上是关于notepad++正则表达式替换,在匹配文本前插入字符,如何做到?的主要内容,如果未能解决你的问题,请参考以下文章

Notepad++的正则表达式替换和替换

notepad正则怎么替换其中一部分

notepad++正则表达式替换字符串详解

notepad++正则表达式替换字符串详解

正则表达式在Notepad ++中查找/替换多个文本

如何使用正则表达式替换 Notepad++ 中标签之间的文本