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

159

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

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 il serait assez compliqué de se passer d'expressions régulières car l'occurrence du (mauvais) caractère minuscule est très spécifique.

J'ai écrit l'expression régulière select et maintenant je peux l'utiliser avec une référence arrière ($ 1 fonctionne très bien) mais je ne peux pas la remplacer par un caractère majuscule. Je pensais que quelque chose comme \ u $ 1 fonctionnerait, 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 simplement 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 prenant en charge une telle fonctionnalité!

Je vous remercie!

David Božjak
la source
3
Cette question est-elle plus adaptée au superutilisateur?
georgiecasey

Réponses:

273

TextPad vous permettra d'effectuer cette opération.

exemple:

test this sentence

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

le \Ufera que tous les caractères suivants seront supérieurs

le \Edésactivera le\U

le résultat sera:

TEST this sentence
akf
la source
13
Existe-t-il un moyen d'effectuer cette opération dans .NET Regex (sans utiliser ToUpper)?
Shimmy Weitzhandler
34
Fonctionne également avec notepad ++.
Shawn
33
\U$1\Edans Sublime Text
Qwerty
10
\U\1\Edans Vim
J. Katzwinkel
6
Fonctionne également dans PHPStorm. J'avais cependant l'exigence inverse. J'ai dû remplacer toutes les valeurs d'attributs majuscules (du HTML probablement des années 90) par des minuscules. Utilisation \L$1\Etravaillé.
Ejaz
30

Je sais que ce fil concerne EditPad Pro, mais je suis venu ici parce que j'avais le même besoin avec une expression rationnelle javascript.

Pour les personnes qui ont besoin du même conseil, vous pouvez utiliser une fonction ou lambda comme argument de remplacement.

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

    s = s.replace(/\-[a-z]/g, x => x[1].toUpperCase());
Sergio Abreu
la source
26

EditPad Pro et PowerGREP ont une fonction unique qui vous permet de changer la casse de la référence arrière. \U1insère la première référence arrière en majuscules, \L1en minuscules et \F1avec le premier caractère en majuscule et le reste en minuscules. Finalement,\I1 insérez-le avec la première lettre de chaque mot en majuscule et les autres lettres en minuscules.

Source: Goyvaerts, janvier (2006). Expressions régulières: le didacticiel complet . Lulu.com. p. 35 . ISBN 1411677609. Google Books. Récupéré le 25 juin 2010.

quantomcat
la source
6

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

Sebastian K.
la source
1
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 recherchais. Super merci!
adietisheim
5

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

Echilon
la source
1

Juste un autre exemple d'utilisation pour Notepad ++ (mode de recherche d'expression régulière)

Find: (g|c|u|d)(et|reate|pdate|elete)_(.)([^\s (]+)
Replace: \U\1\E$2\U\3\E$4

Exemple:

get_user -> GetUser
create_user -> CreateUser
update_user -> UpdateUser
delete_user -> DeleteUser
user2809176
la source