186 votes

Convertir un caractère en majuscule à l'aide d'expressions régulières (EditPad Pro)

J'ai écrit une expression régulière dans l'espoir de pouvoir remplacer chaque correspondance (c'est-à-dire un seul caractère) par un caractère en majuscule. J'utilise EditPad Pro (mais je suis prêt à utiliser n'importe quel autre outil qui me permettrait de le faire, à condition qu'il soit gratuit, puisque je n'ai besoin de le faire qu'une seule fois).

Le contexte : J'ai un très long fichier texte utilisé par une application sensible à la casse, et certains mots commencent par des minuscules au lieu de majuscules, ce qui fait planter l'application. Cela prendrait beaucoup de temps à faire à la main, et ce serait assez compliqué à faire sans expressions régulières parce que l'occurrence de la (mauvaise) minuscule est très spécifique.

J'ai écrit l'expression régulière de sélection et je peux maintenant l'utiliser avec une référence arrière ($1 fonctionne parfaitement), mais je n'arrive pas à la faire remplacer par des caractères majuscules. J'ai pensé à quelque chose comme \u 1 $ devrait fonctionner, mais ce n'est pas le cas dans EditPad Pro.

Si aucun outil gratuit ne me permet de le faire, je suppose que l'alternative serait de le faire en C#, mais je suis un peu pressé et pas près d'un compilateur, donc je devrais d'abord télécharger l'édition express, donc .... Il serait préférable de trouver un outil qui supporte une telle fonctionnalité !

Merci !

3 votes

Cette question convient-elle mieux à Superuser ?

321voto

akf Points 23518

TextPad vous permettra d'effectuer cette opération.

exemple :

test this sentence

Trouvez quoi : \([^ ]*\) \(.*\) Remplacer par : \U\1\E \2

le site \U fera en sorte que tous les caractères suivants soient en majuscules

le site \E éteindra le \U

le résultat sera :

TEST this sentence

17 votes

Existe-t-il un moyen d'effectuer cette opération en Regex .NET (sans utiliser la fonction ToUpper ) ?

38 votes

Fonctionne également dans notepad++.

43 votes

\U$1\E sur Texte sublime

34voto

Sergio Abreu Points 399

Je sais que ce fil de discussion concerne EditPad Pro. Mais je suis venu ici à cause du regexp javascript dont j'ai besoin.

Pour les personnes qui sont ici et qui ont besoin de la même astuce, pour le regexp javascript, vous pouvez utiliser une fonction comme argument de remplacement.

J'utilise la fonction ci-dessous pour convertir les noms css avec - en équivalent javascript, par exemple : "border-top" sera transformé en "borderTop" ;

s = s.replace(/\-[a-z]/g, function(x){return x[1].toUpperCase();});

29voto

quantomcat Points 101

EditPad Pro et PowerGREP possèdent une fonction unique qui vous permet de de changer la casse de la référence arrière. \U1 insère la première référence arrière en majuscules, \L1 en minuscules et \F1 avec le premier caractère en majuscule et le reste en minuscules. Enfin, \I1 l'insère avec la première lettre de chaque mot majuscule, et les autres lettres en minuscules.

Source : Goyvaerts, Jan (2006). Expressions régulières : Le tutoriel complet . Lulu.com. p. 35 . ISBN 1411677609. Google Books. Consulté le 25 juin 2010.

6voto

Sebastian K. Points 31

Vous pouvez le faire dans jEdit, en utilisant l'option "Valeur de retour d'un snippet BeanShell" dans la boîte de dialogue de recherche et de remplacement de jEdit. Il suffit de rechercher " [a-z]" et le remplacer par " _0.toUpperCase()" (sans guillemets)

1 votes

Votre réponse n'est pas vraiment liée à la question initiale, mais je l'ai trouvée en cherchant sur Google et c'était exactement ce que je cherchais. C'est génial, merci !

6voto

Echilon Points 4162

Vous pouvez également mettre en majuscule la première lettre de la correspondance en utilisant \I1 et \I2 etc. au lieu de $1 et $2 .

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