Utilisation de RegEX pour préfixer et ajouter dans Notepad ++


88

J'ai une assez grande liste de mots dans un fichier txt et j'essaie de faire une recherche et un remplacement de regex dans Notepad ++. J'ai besoin d'ajouter une chaîne avant chaque ligne et après chaque ligne. Donc:

wordone
mot deux
mot trois

devenir

capable: "wordone"
capable: "wordtwo"
capable: "wordthree"

Comment puis-je faire ceci?


Désolé, ces chaînes de mots sont censées être sur des lignes séparées! Je parie que ça a semé la confusion maintenant ...
zuk1

sweet save me a lot of googling :)
melaos

Réponses:


173

En supposant des mots alphanumériques, vous pouvez utiliser:

Search  = ^([A-Za-z0-9]+)$
Replace = able:"\1"

Ou, si vous voulez juste mettre en évidence les lignes et utiliser "Tout remplacer" et "Dans la sélection" (avec le même remplacement):

Search = ^(.+)$

^pointe vers le début de la ligne.
$pointe vers la fin de la ligne.

\1 sera la correspondance source entre parenthèses.


merci, après environ 30 minutes de recherche, je suis arrivé ici pour le succès :)
dhaval

Les expressions Reg sont des sauveteurs. Merci pour l'aide.
Techgration

Excellent travail +1 pour expliquer
SSH Ce

Woot! C'est exactement ce dont j'avais besoin.
Chuck Le Butt

1
Dans le dernier N ++, ^([A-Za-z0-9]+)$n'a renvoyé aucune correspondance, mais a ^(.+)$fonctionné dans tous les scénarios. Merci!
Laurie Stearn

29

Pourquoi n'utilisez-vous pas les fonctionnalités d'édition multiligne de Notepad ++?

Maintenez la touche Alt enfoncée tout en sélectionnant du texte (en utilisant votre approche habituelle de clic et de glisser) pour sélectionner du texte sur plusieurs lignes. Ceci est parfois également appelé édition de colonne.

Vous pouvez placer le curseur au début du fichier, appuyez (et maintenez) Alt, Shift, puis continuez à appuyer sur la flèche vers le bas ou PageDown pour sélectionner les lignes que vous souhaitez ajouter avec du texte :-) Facile. L'édition multiligne est une fonctionnalité très utile de Notepad ++. C'est également possible dans Visual Studio, de la même manière, et aussi dans Eclipse en passant en mode de sélection de bloc en appuyant sur Alt + Maj + A, puis en utilisant la souris pour sélectionner du texte sur les lignes.


1
+1 C'est vraiment génial, je ne savais pas que vous pouviez faire ça. Est-il possible d'ajouter quelque chose à la fin de chaque ligne, lorsque la longueur de chaque ligne est différente? Par exemple, lorsque la largeur de la «colonne» varie, il serait judicieux d'ajouter du texte à chaque ligne. J'ai une liste de fonctions et je dois ajouter "();" à chaque ligne, mais chaque nom de fonction a une largeur différente. J'utilise actuellement une macro pour ce faire, merci!
SSH ce

5
pour l'ajout, il est probablement préférable d'utiliser simplement rechercher / remplacer en utilisant le mode de recherche "Etendu". Vous pouvez rechercher une fin de ligne, par exemple \r\net la remplacer par<whatever you want to append>\r\n
Peter Perháč

C'est en fait une très bonne solution, en particulier avec le commentaire APPEND ci-dessus.
Chuck Le Butt

2
Ceci est utile pour le préfixage, mais pas si utile si vous voulez postfixer des lignes de longueur mixte (ajouter à la fin). Je souhaite que Notepad ++ ait une commande intégrée "Modifier les lignes" comme dans Notepad2, qui vous permet de sélectionner les lignes, appuyez sur Alt + M et ajoutez du texte avant et / ou après chaque ligne.
thdoan

21

Expression régulière pouvant être utilisée:

Find: \w.+
Replace: able:"$&"

As, $&vous donnera la chaîne que vous recherchez.

Référez-vous: regexr


6
Bonne mention de $&! Le \1ne fonctionne pas dans tous les environnements.
pfabri

Excellente réponse à propos de $&. Cela fonctionne également dans SublimeText.
WesternGun

Excellente réponse à propos de $&. Cela fonctionne également en code VS.
P. Frank

5

Utilisez une macro.

Macro> Démarrer l'enregistrement

Utilisez le clavier pour effectuer vos modifications de manière répétable, par exemple

accueil> tapez "capable"> fin> flèche vers le bas> accueil

Revenez ensuite au menu et cliquez sur arrêter l'enregistrement, puis exécutez une macro plusieurs fois.

Cela devrait le faire et pas de complications basées sur les regex!


4
Que signifie «complications»? :-)
Tomalak

+1 pour la facilité d'utilisation! J'avais besoin d'ajouter un «onglet» à la fin de chaque ligne d'un fichier et cette astuce a fait l'affaire.
NateJ
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.