Convierta un carácter a mayúsculas usando expresiones regulares (EditPad Pro)

159

Escribí una expresión regular con la esperanza de poder reemplazar cada coincidencia (que es solo un carácter) por caracteres en mayúscula. Estoy usando EditPad Pro (sin embargo, estoy dispuesto a usar cualquier otra herramienta que me permita hacer esto, siempre que sea gratis, ya que solo necesito hacerlo una vez).

Antecedentes: tengo un archivo de texto muy largo utilizado por una aplicación que distingue entre mayúsculas y minúsculas, y algunas palabras comienzan con minúsculas en lugar de mayúsculas, lo que bloquea la aplicación. Esto llevaría mucho tiempo hacerlo a mano, y sería bastante complicado hacerlo sin expresiones regulares porque la aparición del carácter (malvado) en minúsculas es muy específico.

He escrito la expresión regular select y ahora puedo usarla con una referencia inversa ($ 1 funciona bien), sin embargo, no puedo reemplazarla con mayúsculas. Pensé que algo como \ u $ 1 funcionaría, sin embargo, no lo hace en EditPad Pro.

Si ninguna herramienta gratuita me permite hacer esto, supongo que la alternativa sería hacerlo en C #, sin embargo, tengo un poco de prisa y no estoy cerca de un compilador, así que primero tendría que descargar la edición express, así que ... ¡Sería preferible encontrar una herramienta que admita dicha función!

¡Gracias!

David Božjak
fuente
3
¿Es esta pregunta más adecuada para Superusuario?
georgiecasey

Respuestas:

273

TextPad le permitirá realizar esta operación.

ejemplo:

test this sentence

Encuentra qué: \([^ ]*\) \(.*\) Reemplazar con:\U\1\E \2

esto \Uhará que todos los caracteres siguientes sean superiores

el \Eapagará el\U

el resultado será:

TEST this sentence
akf
fuente
13
¿Hay alguna manera de realizar esta operación en .NET Regex (sin usar ToUpper)?
Shimmy Weitzhandler
34
Funciona en notepad ++ también.
Shawn
33
\U$1\Een Sublime Text
Qwerty
10
\U\1\Een Vim
J. Katzwinkel
66
Funciona en PHPStorm también. Sin embargo, tenía el requisito opuesto. Tuve que reemplazar todos los valores de atributo en mayúsculas (probablemente de HTML de los 90) a minúsculas. Utilizando \L$1\Etrabajado.
Ejaz
30

Sé que este hilo trata sobre EditPad Pro, pero vine aquí porque tenía la misma necesidad con una expresión regular de JavaScript.

Para las personas que necesitan el mismo consejo, puede usar una función o lambda como argumento de reemplazo.

Utilizo la siguiente función para convertir nombres CSS con -el equivalente de JavaScript, por ejemplo, "border-top"se transformará en "borderTop":

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

EditPad Pro y PowerGREP tienen una característica única que le permite cambiar el caso de la referencia inversa. \U1inserta la primera referencia en mayúscula, \L1en minúscula y \F1con el primer carácter en mayúscula y el resto en minúscula. Finalmente, lo \I1inserta con la primera letra de cada palabra en mayúscula y las otras letras en minúscula.

Fuente: Goyvaerts, Jan (2006). Expresiones regulares: el tutorial completo . Lulu.com pags. 35 . ISBN 1411677609. Google Books. Consultado el 25 de junio de 2010.

Quantomcat
fuente
6

Puede hacerlo en jEdit, utilizando la opción "Valor de retorno de un fragmento de BeanShell" en el cuadro de diálogo Buscar y reemplazar de jEdit. Solo busque " [a-z]"y reemplácelo por " _0.toUpperCase()"(sin comillas)

Sebastian K.
fuente
1
Su respuesta no está realmente relacionada con la pregunta inicial, pero la encontré mientras buscaba en Google y era exactamente lo que estaba buscando. ¡Genial gracias!
adietisheim
5

También puede poner en mayúscula la primera letra del partido usando \I1y \I2etc. en lugar de $1y $2.

Echilon
fuente
1

Solo otro ejemplo de uso para Notepad ++ (modo de búsqueda de expresión regular)

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

Ejemplo:

get_user -> GetUser
create_user -> CreateUser
update_user -> UpdateUser
delete_user -> DeleteUser
usuario2809176
fuente