Est-ce que quelqu'un sait comment remplacer plusieurs mots différents en même temps dans notepad ++.
Par exemple;
J'ai "bon", "excellent" et "bien" et je veux les remplacer par "mauvais", "pire" et "pas" tout à la fois
Je sais que je peux les remplacer un par un, mais le problème auquel je suis confronté exige que je remplace beaucoup de mots, ce qui n’est pas pratique.
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])
Essayez une expression régulière en remplaçant (good)|(great)|(fine)
par (?1bad)(?2worse)(?3not)
.
La recherche recherche l’une des trois alternatives séparées par le |
. Chaque alternative a ses propres crochets de capture. Le remplacement utilise la forme conditionnelle ? Ntrue-expression: false-expression où N est un chiffre décimal, la clause vérifie si l'expression de capture N correspond.
Testé dans Notepad ++ 6.3
Mettre à jour:
Vous pouvez trouver une bonne documentation sur le nouveau PRCE Regular Expressions utilisées par N ++ depuis la version 6.0 aux adresses DEUX au dessous de :
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
Le premier concerne la syntaxe des expressions régulières dans SEARCH
La SECONDE concerne la syntaxe des expressions régulières dans REMPLACEMENT
Et, si vous comprenez le "français écrit", j’ai réalisé un tutoriel sur Expressions régulières PCRE, stockées dans le site personnel de Christian Cuvier (cchris), à l'adresse ci-dessous:
(Extrait d'un message de THEVENOT Guy à http://sourceforge.net/p/notepad-plus/discussion/331754/thread/ca059a0a/ )
J'ai cherché des logiciels pouvant remplacer plusieurs termes en même temps. Notepad ++ est limité en caractères (limite de 2046 caractères dans le champ de remplacement). J'ai donc décidé de créer ma propre version de remplacement en 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>
Je devais exécuter la substitution sur plusieurs fichiers.
Donc, basé sur la réponse de Mauricio Morales , j'ai créé le script de suivi.
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
Si vous remplacez les mêmes mots dans plusieurs fichiers différents tout le temps, enregistrer votre action une fois à l'aide de ces boutons et l'enregistrer en tant que macro sera utile. * Bloc-notes ++