32 votes

Utilisation d'expressions régulières pour remplacer en masse dans Notepad ++ et Vim

Donc j'ai un gros fichier texte qui se présente comme suit:

<option value value='1' >A
<option value value='2' >B
<option value value='3' >C
<option value value='4' >D

C'est plusieurs centaines de lignes, et je n'ai vraiment pas envie de le faire manuellement. L'expression que je suis en train d'utiliser est:

<option value='.{1,}' >

Qui fonctionne comme prévu quand je le lance à travers plusieurs en ligne expression régulière testeurs. En gros, je veux tout enlever avant de A, B, C, etc. Le problème est lorsque j'essaie d'utiliser cette expression dans Vim et Notepad++, il n'arrive pas à trouver quoi que ce soit.

Je vous remercie.

63voto

GlennS Points 1426

Dans Notepad ++, vous n'avez pas besoin d'utiliser des expressions régulières pour cela.

Maintenez la touche Alt enfoncée pour vous permettre de sélectionner un rectangle de texte sur plusieurs lignes à la fois. Sélectionnez le morceau dont vous souhaitez vous débarrasser, puis appuyez sur la touche Suppr.

20voto

Whaledawg Points 2018

Tout avant les A , B , C , etc.

Cela semble si simple que je dois vous mal interpréter. C'est juste

 :%s/<.*>//
 

8voto

andHapp Points 1438

Il y a une solution très simple à ce à moins que je n'ai pas compris le problème. L'expression régulière suivante:

(.*)(>)(.*)

va correspondre au modèle spécifié dans votre post.

Ainsi, dans notepad++ vous trouvez (.*)(>)(.*) et de le remplacer avec de l' \3.

Les expressions régulières sont essentiellement gourmande dans le sens que si vous spécifiez (.*) il corresponde à l'ensemble de la ligne et ce que vous voulez faire est de le décomposer en quelque sorte, de sorte que vous pouvez extraire de la chaîne que vous souhaitez conserver. Ici, j'ai fait exactement la même et il fonctionne très bien dans Notepad++ et Editplus3.

7voto

rmeador Points 15107

Votre solution d'origine pose deux problèmes. Tout d'abord, votre exemple de texte:

 <option value value='1' >A
 

a deux occurrences du mot "valeur". Votre regex ne le fait pas. De plus, vous devez sortir de l’attelle d’ouverture dans le quantificateur de votre regex ou Vim l’interprétera comme une accolade littérale. Cette expression rationnelle fonctionne:

 :%s/<option value value='.\{1,}' >//g
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X