Remover / alterar tags HTML específicas NotePad ++

1

Eu encontrei muitos posts semelhantes, mas nenhum deles responde à minha pergunta. Gostaria de substituir / remover / alterar a tag de abrir e fechar por uma palavra-chave específica. neste caso, estou tentando remover todas as tags com href = "#" nele ....

<a href="#">leave this text</a>
<a class="" id="" href="#">leave this text too</a>

<a href="http://......">Dont remove this tag!</a>

Eu tenho esse código, mas não consigo descobrir como deixar o texto ...

find: <a[^h]*href="#"[^>]*> (skip content) </a>
replace: (same content)
or
replace: <a href="somthing"> (same content) </a>
Alfonso
fonte
Por nota ++ você quer dizer notepad ++?
DavidPostill
Sim desculpa. NotePad ++
Alfonso
Isso foi fácil demais! ;)
DavidPostill

Respostas:

0

Estou tentando remover todas as tags que contêm href="#"

  • Menu "Pesquisar"> "Substituir" (ou Ctrl+ H)

  • Defina "Encontre o que" para <a .*?href="#">(.*?)</a>

  • Defina "Substituir por" para \1

  • Ativar "Expressão regular"

  • Clique em "Substituir tudo"

    Imagem

Antes :

<a href="#">leave this text</a>
<a class="" id="" href="#">leave this text too</a>
<a href="http://......">Dont remove this tag!</a>

Depois :

leave this text
leave this text too
<a href="http://......">Dont remove this tag!</a>

Conforme apontado por AFH em um comentário, há uma expressão regular melhor que capturará expressões que não foram incluídas nos dados da amostra.

  • Defina "Encontre o que" para <a .*?href="#" .*?>(.*?)</a>

    Isso corresponderá às linhas nas quais há cláusulas após a href="#"(e antes da primeira correspondência >).

    Nota:

    Ele não funcionará corretamente se houver algum >s no campo de valor de uma cláusula subsequente (antes da >correspondência <a)


Leitura adicional

DavidPostill
fonte
1
Não vejo nenhuma razão para que sua string de pesquisa não funcionasse com os exemplos que o questionador deu, embora sua resposta abaixo permita cláusulas depois hrefe antes: para isso você precisaria <a .*?href="#" .*?>(.*?)</a>. De fato, essa deveria ser uma solução melhor, pois a sua falharia se houvesse outra cláusula contendo hantes de href(por exemplo, no valor classou id). Ambos falhariam se houvesse >no campo de valor de uma cláusula subsequente, e não vejo uma solução fácil para esse caso (improvável).
AFH
@AFH Concordo com todos os itens acima. No entanto, minha resposta funcionou com os dados que o OP forneceu como entrada. Acrescentarei uma nota com sua expressão regular apenas para completar. Obrigado por seu comentário.
DavidPostill
0

Obrigado David pela resposta! Mas, na verdade, o código: <a .*?href="#">(.*?)</a>não encontrou nenhum atributo no meu arquivo. Pode ser por causa de outras configurações ou versões diferentes do notepad ++. Eu tive que usar este código:

 Find:    <a[^h]*href="#"[^>]*>(.*?)</a>
 Replace: <a href="new_url">\1</a>
Alfonso
fonte
Minha resposta estava correta com os dados que você forneceu como entrada. Não acredito que a versão do Notepad ++ faça alguma diferença com esse tipo de expressão regular.
DavidPostill