.class pesquisa específica e substituir

1

Estou tentando remover a tag inteira com uma classe específica:

Código:

<div> 
Blah blah 
<div class='myClass'>
  <div>some other div</div>
</div>
</div>

<div> 
Blah blah 
<div class='myClass'>
  more text
</div>
</div>

<div> 
Blah blah 
<div class='myClass'>
  more text
</div>
</div>

Eu quero procurar por tag .myClass e substituí-lo por "" (excluir)
então o resultado é:

<div> 
Blah blah 

</div>

<div> 
Blah blah 

</div>

<div> 
Blah blah 

</div>

Eu sei que é fácil com o jQuery, mas eu quero fazê-lo no lado do editor de texto. Ou talvez eu possa ver o código e copiá-lo depois que o jquery o tiver excluído. Texto Sublime ou Notepad ++

Obrigado!

Miro
fonte

Respostas:

3

Use o notepad ++ com expressões regulares

  1. Abra o Notepad ++
  2. pressione CTRL + H
  3. Selecione Expressão regular como modo de pesquisa
  4. Entrar ^.*myClass.*$ debaixo Encontrar o que e nada sob Substituir com
  5. Clique Substitua tudo

enter image description here


Casos em que as sequências inicial e final estão em linhas diferentes (Bloco de Notas 6.xx)

Usamos uma solução temporária e excluímos temporariamente todos os retornos de carro (+ novas linhas).
Isso nos dá uma única linha longa, onde é muito mais fácil usar o RegEx. Mais tarde, colocamos o carro de volta.

  1. Escolha uma string única como %%%NEWLINE%%% o que não ocorre até agora em seu texto.
    Teste primeiro com um simples CTRL + F procurar
  2. pressione CTRL + H e selecione Expressão regular como modo de pesquisa
  3. Encontrar \r\n e substitua por %%%NEWLINE%%%. Clique Substitua tudo .
    \r\n são caracteres especiais e representam retorno de carro e nova linha . Você tem uma longa fila.
    Lembre-se: a partir de agora você não pode usar ^ e $ não mais
  4. Encontrar <div .*?myClass.*?</div> e substitua por nada (observe o espaço)
  5. Encontrar %%%NEWLINE%%% e substitua por \r\n para trazer de volta nossa estrutura de texto normal

Ao escrever minha edição, notei que você mudou sua pergunta com um separador de jogo. Este método (provavelmente nenhum método RegEx) não funcionará enquanto você tiver aninhado <div></div> Tag. O motor RegEx não pode saber se deve parar na 2ª, 3ª ou n-ésima </div>

RegEx usado

^  → line beginning
.  → any single character
*  → repeat previous pattern 
.*  → any characters as long as possible (greedy)  
.*? → any characters as short as possible (non greedy)
$  → line end

Recursos usados

nixda
fonte
Funciona muito bem em uma linha. Eu não consegui simplificar o exemplo. Desculpa. Eu editei para que o fechamento & lt; / div & gt; está em uma linha diferente.
Miro
Sua última edição me deu uma dor de cabeça. Aninhado <div> tags são um problema para o meu método RegEx.
nixda
Desculpe por isso :) Você foi acima e além! Eu realmente acho que os editores de texto devem ter uma função ou plugin para selecionar tags e classes HTML (não baseado em RegEx :)).
Miro
Para uma única operação, existe um plugin notepad ++ chamado Tag HTML . Aqui está um imagem de exemplo . Isso só ajuda a identificar uma tag de fechamento. Nada mais, desculpe.
nixda
0

Eu ainda uso o Dreamweaver principalmente porque é uma pesquisa de "tag específica". Você pode encontrar, remover, despir e mudar tudo facilmente. No seu caso, você pode encontrar todos os div tag que tem myClass class e remover tag com conteúdo. Leva apenas 5 segundos para ter o resultado desejado.

Você pode ver como funciona neste link http://www.lehigh.edu/computing/web/IntDreamweaver/find.html

Esta é a parte mais importante que falta no notepad ++ para as minhas necessidades.

Hasan Mücahit Bulut
fonte