Converter um caractere para maiúsculas usando expressões regulares (EditPad Pro)

159

Escrevi uma expressão regular na esperança de poder substituir todas as correspondências (que é apenas um caractere) por maiúsculas. Estou usando o EditPad Pro (no entanto, estou disposto a usar qualquer outra ferramenta que me permita fazer isso, desde que seja livre para tentar, pois só preciso fazer isso uma vez).

Segundo plano: tenho um arquivo de texto muito longo usado por um aplicativo que diferencia maiúsculas de minúsculas, e algumas palavras começam com letras minúsculas em vez de maiúsculas, interrompendo o aplicativo. Isso levaria muito tempo para ser feito à mão e seria bastante complicado sem expressões regulares, porque a ocorrência do caractere minúsculo (mal) é muito específica.

Eu escrevi a expressão regular select e agora posso usá-la com uma referência anterior ($ 1 funciona muito bem), no entanto, não posso substituí-la por caracteres maiúsculos. Eu pensei que algo como \ u $ 1 funcionaria, mas não no EditPad Pro.

Se nenhuma ferramenta gratuita me permitir fazer isso, acho que a alternativa seria apenas fazê-lo em C #, mas estou com pressa e não estou perto de um compilador, então eu teria que baixar a edição expressa primeiro, então ... Seria preferível encontrar uma ferramenta que suporte esse recurso!

Obrigado!

David Božjak
fonte
3
Esta pergunta é mais adequada ao superusuário?
georgiecasey

Respostas:

272

O TextPad permitirá que você execute esta operação.

exemplo:

test this sentence

Encontre o que: \([^ ]*\) \(.*\) Substitua por:\U\1\E \2

isso \Ufará com que todos os caracteres a seguir sejam superiores

o \Edesligará o\U

o resultado será:

TEST this sentence
akf
fonte
13
Existe uma maneira de executar esta operação no .NET Regex (sem usar ToUpper)?
Shimmy Weitzhandler 27/10
34
Funciona também no bloco de notas ++.
Shawn
33
\U$1\Eem Sublime Text
Qwerty
10
\U\1\Eem Vim
J. Katzwinkel
6
Também funciona no PHPStorm. Eu tinha o requisito oposto embora. Eu tive que substituir todos os valores de atributo em maiúsculas (provavelmente do HTML dos anos 90) para minúsculas. Usando \L$1\Etrabalhou.
Ejaz
30

Eu sei que este tópico é sobre o EditPad Pro, mas eu vim aqui porque tinha a mesma necessidade com um regexp javascript.

Para as pessoas aqui que precisam da mesma dica, você pode usar uma função ou lambda como argumento de substituição.

Eu uso a função abaixo para converter nomes de css com -o equivalente em javascript, por exemplo, "border-top"será transformado em "borderTop":

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

O EditPad Pro e o PowerGREP possuem um recurso exclusivo que permite alterar o caso da referência anterior. \U1insere a primeira referência posterior em maiúscula, \L1minúscula e \F1com o primeiro caractere em maiúscula e o restante em minúscula. Por fim, \I1insere-o com a primeira letra de cada palavra em maiúscula e as outras letras em minúsculas.

Fonte: Goyvaerts, janeiro (2006). Expressões regulares: o tutorial completo . Lulu.com. p. 35 . ISBN 1411677609. Google Books. Recuperado em 25 de junho de 2010.

quantomcat
fonte
6

Você pode fazer isso no jEdit, usando a opção "Return value of a BeanShell snippet" na caixa de diálogo localizar e substituir do jEdit. Basta procurar " [a-z]"e substituí-lo por " _0.toUpperCase()"(sem aspas)

Sebastian K.
fonte
1
Sua resposta não está realmente relacionada à pergunta inicial, mas eu a encontrei enquanto pesquisava no Google e era exatamente o que estava procurando. Incrível, obrigado!
precisa saber é o seguinte
5

Você também pode colocar a primeira letra da partida em maiúscula usando \I1e \I2etc em vez de $1e $2.

Echilon
fonte
1

Apenas mais um exemplo de uso para o Notepad ++ (modo de pesquisa de expressão regular)

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

Exemplo:

get_user -> GetUser
create_user -> CreateUser
update_user -> UpdateUser
delete_user -> DeleteUser
user2809176
fonte