在notepad ++中进行多字搜索和替换

时间:2012-07-09 05:23:23

标签: notepad++

有没有人知道如何在记事本++中同时替换几个不同的单词。

例如;

我有“好”,“好”和“好”,我想立即用“坏”,“更糟”和“不”取代它们

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

5 个答案:

答案 0 :(得分:42)

尝试使用(good)|(great)|(fine)替换(?1bad)(?2worse)(?3not)的正则表达式。

搜索会查找由|分隔的三个备选项之一。每个替代方案都有自己的捕获括号。替换使用条件形式?Ntrue-expression:false-expression ,其中 N 是十进制数字,该子句检查捕获表达式 N 是否匹配。

在Notepad ++ 6.3中测试

更新

  

你可以找到关于新PRCE Regular的好文档   表达式,自6.0版以来由N ++使用,位于TWO地址   下面:

     

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

     

第一个涉及SEARCH中正则表达式的语法

     

第二章涉及正则表达式的语法   REPLACEMENT

     

而且,如果你能理解“书面法语”,我就做了一个教程   PCRE正则表达式,存储在Christian的个人网站中   Cuvier(cchris),地址如下:

     

http://oedoc.free.fr/Regex/TutorielRegex.zip

(摘自 THEVENOT Guy http://sourceforge.net/p/notepad-plus/discussion/331754/thread/ca059a0a/发布)

答案 1 :(得分:23)

从插件管理器安装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])

针对您要替换的文本运行新脚本。

答案 2 :(得分:2)

我四处寻找可以同时替换多个术语的软件,Notepad ++有一个字符限制(在替换字段中限制为2046个字符),所以我决定在HTML中创建自己的替换版本,这里是网站:

https://jsfiddle.net/Byte/y50q1e7g/

window.onload=function(){
	$("textarea,input[type='text']").focus(function() { $(this).select(); } );
}


function substituira() {
	
	var separatedBy = new RegExp($("#separatedBy").val());
	
	var achar = $('#achar').val().split(separatedBy);
	var substituir = $('#substituir').val().split(separatedBy);
	
	$("#final").val($("#original").val());
	
	var isCaseSensitive = "";
	if(!$( "#caseSensitive" ).prop("checked")){isCaseSensitive = "i";}
	
	for(i=0;i<achar.length;i++){
		$("#final").val($("#final").val().replace(new RegExp(achar[i],"g"+isCaseSensitive), substituir[i]));
	}
}
*{
	font-family: Sans-Serif;
}

body{
	padding:1em 10%;
}

textarea,input[type='text']{
	font-family: monospace;
}

textarea{
	border-radius: 5px;
}

.config{
	border-radius: 5px;
	border: 1px solid #888888;
	padding: 1em;
	display: inline-block;
	color: #888888;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>Original text:<br /><textarea id="original" rows="4" cols="50"></textarea></p>

<p>Items to find:<br /><textarea id="achar" rows="4" cols="50">item1
item2
item3</textarea></p>
<p>Items to replace:<br /><textarea id="substituir" rows="4" cols="50">replace1
replace2
replace3</textarea></p>

<p class="config"><b>Configuration:</b><br>
Items separated by <input id="separatedBy" type="text" value="\n" size="3" /><br />
<input id="caseSensitive" type="checkbox"/> Case sensitive<br><br>
<i style="font-size: 0.7em;">NOTE: Already supports regex on each item</i></p><br /><br />



<input type="button" value="Replace" onclick="substituira()" />

<p>Result:<br><textarea id="final"  rows="4" cols="50"></textarea></p>

答案 3 :(得分:1)

我需要在多个文件上运行替换。

因此,根据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

答案 4 :(得分:0)

如果您要一直更换多个不同文件中的相同字词,请使用these buttons录制您的操作并将其保存为宏将会很有帮助。 *记事本++