web-dev-qa-db-fra.com

Plusieurs mots de recherche et de remplacer dans le bloc-notes ++

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.

23
Al Fredo

Installer Script Python plugin à partir du gestionnaire de plugins. </ P>

Créez un fichier avec vos substitutions (par exemple, C: /Temp/Substitutions.txt), séparez les valeurs par un espace:

good bad
great worse
fine not

Créez un nouveau script:

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

Exécutez le nouveau script sur le texte que vous souhaitez remplacer.

22
Mauricio Morales

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-expressionN 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:

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

(Extrait d'un message de THEVENOT Guy à http://sourceforge.net/p/notepad-plus/discussion/331754/thread/ca059a0a/ )

40
AdrianHHH

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>

2

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
1
D. Kastier

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 ++

0
Altair Benemerito