Pesquise e substitua pelos componentes RegEx no editor Atom

130

Quero pesquisar e substituir este

`https://example.com/`{.uri}

para

[https://example.com/](https://example.com/)

Com vimeu faria um s/(http. *), {.uri}/[\1](\1)/gMas isso não funciona atom.io. Como posso resolver isso?

Wintermeyer
fonte
3
Eu também poderia usar vim. Gostaria de saber como resolver o problema em questão atom.
Wintermeyer

Respostas:

215

Se você Cmd-F e abrir o painel de pesquisa, existe um botão ". *" No lado direito. Clique nele e agora é o modo regex.

eu acho

(http.*)\{\.uri\}

e substitua para

[$1]($1)
speedogoo
fonte
4
s/(http.*){.uri}/[\1](\1)/gnão funciona atomcom o RegEx ativado. Talvez seja um erro ou uma sintaxe diferente do RegEx. Essa foi a razão da minha pergunta.
Wintermeyer
19
Eu encontro "(http. *) \ {\. Uri \}" e substituo por "[$ 1] ($ 1)". Funciona. Este é o regex de estilo perl, que acredito ser o padrão.
speedogoo
1
@speedogoo Você deve enviar isso como a resposta correta.
método
3
Alguma idéia de como faço para avaliar o grupo capturado para fazer algumas coisas antes de substituir? Por exemplo, se $1capturar um grupo de números - 123, substitua-o adicionando 1 a ele, algo como eval($1+1)..?
SexyBeast 22/02
6
Ok, eu esqueci de usar parênteses no regex. Apenas ignore o que eu disse.
Antoine
19

Juste para atualizar a resposta do @ speedogoo para futuros leitores, se você não encontrar o modo regex na exibição de pesquisa, será semelhante a este:

insira a descrição da imagem aqui

Você também pode abri-lo com o atalho Ctrl+ Alt+ / (padrão) .


Observe que even ^e $ já são suportados pela localização e substituição do Atom.

Mistalis
fonte
1
Você está dizendo que o Group Replace não funciona com o Atom, tornando a resposta aceita incorreta (e arruinando meu dia com o Atom)?
Dan Rosenstark
3
Acredito que ele quis dizer que as âncoras de início ^e fim de linha $não são suportadas. A substituição do grupo é suportada.
precisa saber é o seguinte
3
Funciona em versões recentes, o problema do github vinculado foi encerrado.
Frank Lee