在Notepad++中进行多词搜索和替换

36

如何在Notepad++中同时替换多个不同的单词?

例如;

我有“good”、“great”和“fine”,我想同时将它们分别替换为“bad”、“worse”和“not”。

我知道我可以逐个替换它们,但是我面临的问题要求我替换很多单词,这样做并不方便。

4个回答

68
尝试使用正则表达式替换(good)|(great)|(fine)(?1bad)(?2worse)(?3not)
搜索寻找由|分隔的三个备选项之一。每个备选项都有自己的捕获括号。替换使用条件形式?Ntrue-expression:false-expression,其中N是十进制数字,该子句检查捕获表达式N是否匹配。
在Notepad++ 6.3中测试通过。
更新:
您可以在以下两个网址找到有关N++使用的新PRCE正则表达式的详细文档,自6.0版本以来一直在使用: http://www.boost.org/doc/libs/1_48_0/libs/regex/doc/html/boost_regex/syntax/perl_syntax.html http://www.boost.org/doc/libs/1_48_0/libs/regex/doc/html/boost_regex/format/boost_format_syntax.html 第一个网址涉及搜索中正则表达式的语法。
第二个网址涉及替换中正则表达式的语法。
如果您能理解“写作的法语”,我还制作了一个有关PCRE正则表达式的教程,存储在Christian Cuvier(cchris)的个人网站上,网址如下: http://oedoc.free.fr/Regex/TutorielRegex.zip (摘自http://sourceforge.net/p/notepad-plus/discussion/331754/thread/ca059a0a/上的THEVENOT Guy的帖子)

太棒了!您可以添加源代码吗?我无法在文档中找到这个。我经常使用notepad ++的regex替换功能,我想知道是否可以获取更多很酷的东西。 - Rishi Dua
对我来说,6.4.5 中的索引从 0 开始。 - jpsimard-nyx
太棒了,我从来不知道这个。经常使用Notepad++进行正则表达式替换。 - OGHaza
太棒了!但是,您知道如何让它使用上一个搜索/替换的输出结果进行下一个操作吗?我以为这就是它的作用,因为有 |,但其实并不是。 - Patches
但是我们如何处理大量的列表呢?我有大约100个元素,由逗号分隔,另一个列表也是用逗号分隔的。 - AbstractDissonance

30

从插件管理器中安装Python Script插件。

创建一个带有您的替换内容的文件(例如,C:/Temp/Substitutions.txt),用空格分隔值:

good bad
great worse
fine not

创建新脚本:

with open('C:/Temp/Substitutions.txt') as f:
    for l in f:
        s = l.split()
        editor.replace(s[0], s[1])

运行新脚本来替换您想要替换的文本。


1
适用于简单的搜索和替换。如果要替换的内容本身是正则表达式,则无法正常工作。 - Rishi Dua
3
为了回答这个问题,“简单的搜索替换”已经足够了。可以通过使用“editor.rereplace(s[0],s[1])”实现“正则表达式搜索替换”。甚至可以使用“editor.pyreplace”来利用完整的Python正则表达式支持。 - Mauricio Morales
太棒了!现在我明白了。谢谢 :) - Rishi Dua
我该如何在NotePad++中跨多个文件运行这个Python脚本? - AllSolutions

2

我需要对多个文件进行替换。根据Mauricio Morales的回答,我创建了以下脚本。

with open('C:/Temp/Substitutions.txt') as f:
    files = notepad.getFiles()
    for file in files:
        notepad.activateFile(file[0])
        for l in f:
            s = l.split()
            editor.replace(s[0], s[1])
        f.seek(0) # Reset file input stream

-1

如果你经常需要在多个不同的文件中替换相同的单词,使用这些按钮记录你的操作并将其保存为宏将会很有帮助。*Notepad++


“Notepad++”是什么意思? - Peter Mortensen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接