70 votes

Expressions régulières non gourmandes de Notepad++

Notepad++ prend-il en charge les expressions régulières non gourmandes ?

Par exemple pour le texte :

abcxadc

Je veux obtenir des pièces en utilisant le modèle :

a.+c

Et maintenant, j'obtiens une chaîne entière au lieu de deux parties. J'ai essayé d'utiliser l'opérateur '?' mais sans succès.

72voto

user1584660 Points 161

J'ai fait ce qui suit avec Notepad++ V6.1.5 (il a maintenant le moteur regex PCRE) :

a.+?c

et a obtenu 2 parties ( abc y adc )

Les recherches paresseuses (non gourmandes) sont désormais possibles.

0 votes

65voto

UGEEN Points 2243

Mise à jour : À partir de la version 5.9 (date de construction : 31 mars 2011), Notepad++ prend en charge les expressions régulières non gourmandes (nouvelle version de scintilla 2.5).

47voto

Daniel Vandersluis Points 30498

NOTE : Cette réponse acceptée est obsolète depuis le 31 mars 2011. Notepad++ v5.9 et les versions ultérieures prennent désormais en charge les expressions régulières non gourmandes.

Veuillez voir une réponse mise à jour aquí o aquí .


Notepad++ ne prend pas en charge la fonction "paresseux". ? modificateur. Au lieu de cela, vous pouvez spécifier ce que vous Ne le fais pas. veulent :

a[^c]+c

Qui précise : match a suivi par un ou plusieurs caractères qui ne sont pas c suivi par c . Cela correspondra à abc y adc .

0 votes

Duh. Génial. Je n'avais pas pensé à ça avant.

10 votes

UPDATE Les expressions régulières non avides sont prises en charge à partir de la version 5.9 (build time 31 mars 2011). H/T à la réponse de @UGEEN.

0 votes

1voto

SebastianH Points 1068

En nettoyant un fichier journal de pièces inutiles, j'ai eu des difficultés à utiliser une expression régulière non gourmande avec "Remplacer tout" et un motif "Remplacer par" vide. Ma solution consistait à faire en sorte que le motif corresponde à la ligne entière sans modifier le reste de la ligne.

Exemple : supprimer tout début de ligne jusqu'au premier point-virgule : au lieu de ^.+?: -> utiliser maintenant ^.+?:(.*)$ -> \1 et appuyez sur "Remplacer tout"

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