有谁知道如何在记事本++中一次替换几个不同的单词。
例如;
我有“好”、“好”和“好”,我想一次用“坏”、“差”和“不”来替换它们
我知道我可以一个一个地替换它们,但是我面临的问题需要我替换很多单词,这样做不方便。
有谁知道如何在记事本++中一次替换几个不同的单词。
例如;
我有“好”、“好”和“好”,我想一次用“坏”、“差”和“不”来替换它们
我知道我可以一个一个地替换它们,但是我面临的问题需要我替换很多单词,这样做不方便。
尝试用正则表达式(good)|(great)|(fine)
替换(?1bad)(?2worse)(?3not)
。
搜索查找由 . 分隔的三个备选方案中的任一个|
。每个备选方案都有自己的捕获括号。替换使用条件形式?Ntrue-expression:false-expression其中N是十进制数字,该子句检查捕获表达式N是否匹配。
在记事本++ 6.3 中测试
更新:
从 6.0 版本开始,您可以在以下两个地址找到关于 N++ 使用的新的 PRCE 正则表达式的良好文档:
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
第一个涉及搜索中正则表达式的语法
第二个是关于 REPLACEMENT 中正则表达式的语法
而且,如果你能理解“书面法语”,我做了一个关于PCRE正则表达式的教程,存储在Christian Cuvier(cchris)的个人站点中,地址如下:
(摘自 THEVENOT Guy在http://sourceforge.net/p/notepad-plus/discussion/331754/thread/ca059a0a/的帖子)
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])
我四处寻找可以同时替换多个术语的软件,Notepad ++ 有字符限制(替换字段中限制为 2046 个字符),所以我决定用 HTML 制作自己的替换版本,这里是网站:
https://jsfiddle.net/Byte/y50q1e7g/
window.onload = function(){
$("textarea,input[type='text']").focus(function() { $(this).select(); } );
}
function replace(){
// Get Configuration
let separatedBy = new RegExp( $("#separatedBy").val() );
let useRegex = $("#useRegex").prop("checked");
let isCaseSensitive = $("#caseSensitive").prop("checked") ? "" : "i";
// Get 'Find' and 'Replace'
let find = $('#find').val().split(separatedBy);
let replace = $('#replace').val().split(separatedBy);
// Make result equal origin
$("#result").val($("#original").val());
// Run in each 'find' item
for(i=0; i<find.length; i++){
// check if not use Regex to escape the regex
find[i] = useRegex ? find[i] : find[i].replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
// Replace
$("#result").val($("#result").val().replace(new RegExp(find[i],"g"+isCaseSensitive), replace[i]));
}
}
*{
font-family: Sans-Serif;
box-sizing: border-box;
}
body{
padding:1em 10%;
}
textarea,input[type='text']{
font-family: monospace;
}
textarea{
border-radius: 5px;
width: 100%;
padding:1em;
}
.config{
width: 100%;
border-radius: 5px;
border: 1px solid #888888;
padding: 1em;
display: inline-block;
color: #888888;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.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="find" rows="4" cols="50">item1
item2
item3</textarea>
</p>
<p>
Items to replace:<br />
<textarea id="replace" rows="4" cols="50">replace1
replace2
replace3</textarea>
</p>
<p class="config">
<b>Configuration:</b><br><br />
- Items separated by <input id="separatedBy" type="text" value="\n" size="3" /> (Regex)<br />
- <input id="useRegex" type="checkbox"/> Use Regex in each item<br>
- <input id="caseSensitive" type="checkbox" checked/> Use case sensitive
</p>
<p>
<input type="button" value="Replace" onclick="replace()" />
</p>
<p>
Result:<br>
<textarea id="result" rows="4" cols="50"></textarea>
</p>
我需要在几个文件上运行替换。
因此,根据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
如果您一直在替换多个不同文件中的相同单词,则使用这些按钮记录您的操作并将其保存为宏会很有帮助。*记事本++