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>
Respostas:
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"
Antes :
Depois :
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
fonte
href
e 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 contendoh
antes dehref
(por exemplo, no valorclass
ouid
). 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).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:fonte