有没有人知道如何在记事本++中同时替换几个不同的单词。
例如;
我有“好”,“好”和“好”,我想立即用“坏”,“更糟”和“不”取代它们
我知道我可以逐个替换它们,但我遇到的问题要求我更换很多单词,这样做不方便。
答案 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),地址如下:
(摘自 THEVENOT Guy 在http://sourceforge.net/p/notepad-plus/discussion/331754/thread/ca059a0a/发布)
答案 1 :(得分:23)
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录制您的操作并将其保存为宏将会很有帮助。 *记事本++