Converti un carattere in maiuscolo usando le espressioni regolari (EditPad Pro)


159

Ho scritto un'espressione regolare nella speranza che sarò in grado di sostituire ogni carattere (che è solo un carattere) con carattere maiuscolo. Sto utilizzando EditPad Pro (tuttavia sono disposto a utilizzare qualsiasi altro strumento che mi consenta di farlo, purché sia ​​libero di provarlo, poiché devo farlo solo una volta).

Sfondo: ho un file di testo molto lungo usato da un'applicazione con distinzione tra maiuscole e minuscole, e alcune parole iniziano con lettere minuscole invece che con caratteri maiuscoli, causando il crash dell'applicazione. Ciò richiederebbe molto tempo a mano e sarebbe piuttosto complicato fare a meno delle espressioni regolari perché il verificarsi del carattere (malvagio) in caratteri minuscoli è molto specifico.

Ho scritto l'espressione regolare selezionata e ora posso usarla con un backreference ($ 1 funziona bene) ma non posso farla sostituire con caratteri maiuscoli. Ho pensato che qualcosa come \ u $ 1 avrebbe funzionato, tuttavia non in EditPad Pro.

Se nessuno strumento gratuito mi consente di farlo, suppongo che l'alternativa sarebbe semplicemente farlo in C #, tuttavia sono un po 'di fretta e non vicino a un compilatore, quindi dovrei prima scaricare l'edizione express, quindi ... Sarebbe preferibile trovare uno strumento che supporti tale funzionalità!

Grazie!


3
Questa domanda è più adatta a Superuser?
georgiecasey,

Risposte:


273

TextPad ti consentirà di eseguire questa operazione.

esempio:

test this sentence

Trova cosa: \([^ ]*\) \(.*\) Sostituisci con:\U\1\E \2

ciò \Ufarà sì che tutti i seguenti caratteri siano superiori

lo \Espegnerà\U

il risultato sarà:

TEST this sentence

13
C'è un modo per eseguire questa operazione in .NET Regex (senza usare ToUpper)?
Shimmy Weitzhandler,

34
Funziona anche con notepad ++.
Shawn,

33
\U$1\Ein Sublime Text
Qwerty,

10
\U\1\Ein Vim
J. Katzwinkel,

6
Funziona anche in PHPStorm. Ho avuto l'opposto requisito però. Ho dovuto sostituire tutti i valori degli attributi maiuscoli (probabilmente dall'HTML degli anni '90) a lettere minuscole. Usando ha \L$1\Efunzionato.
Ejaz,

30

So che questa discussione riguarda EditPad Pro, ma sono venuto qui perché avevo lo stesso bisogno di un regexp javascript.

Per le persone che hanno bisogno dello stesso suggerimento, puoi usare una funzione o lambda come argomento di sostituzione.

Uso la seguente funzione per convertire i nomi CSS con -l'equivalente javascript, ad esempio, "border-top"verrà trasformato in "borderTop":

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

26

EditPad Pro e PowerGREP hanno una funzione unica che ti permette di cambiare il caso del backreference. \U1inserisce il primo backreference in maiuscolo, \L1in minuscolo e \F1con il primo carattere in maiuscolo e il resto in minuscolo. Infine, la \I1inserisce con la prima lettera di ogni parola in maiuscolo e le altre lettere in minuscolo.

Fonte: Goyvaerts, Jan (2006). Espressioni regolari: il tutorial completo . Lulu.com. p. 35 . ISBN 1411677609. Google Libri. Estratto il 25 giugno 2010.


6

Puoi farlo in jEdit, usando l'opzione "Restituisci valore di uno snippet BeanShell" nella finestra di dialogo Trova e sostituisci di jEdit. Basta cercare " [a-z]"e sostituirlo con " _0.toUpperCase()"(senza virgolette)


1
La tua risposta non è realmente correlata alla domanda iniziale, ma l'ho trovata mentre cercavo su Google ed era esattamente quello che stavo cercando. Fantastico, grazie!
adietisheim,

5

Puoi anche scrivere in maiuscolo la prima lettera della partita usando \I1e \I2etc invece di $1e $2.


1

Solo un altro esempio di ussage per Notepad ++ (modalità di ricerca di espressioni regolari)

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

Esempio:

get_user -> GetUser
create_user -> CreateUser
update_user -> UpdateUser
delete_user -> DeleteUser
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.