Como posso fazer uma pesquisa do NetBeans por HTML que inclua espaços em branco ímpares?

0

Por exemplo, para código com muitos snippets como este:

<section>
    <p><b>test</b></p>
</section>

Eu quero poder pesquisar por:

<section>
    <p><b>

Para que eu possa substituí-lo por

<section>
    <h2>

Mas não substitua outros <p><b> que não tenham uma tag de seção imediatamente antes.

Portanto, não consigo pesquisar <p><b> , mas o NetBeans não permite que eu cole seleções com espaço em branco. Então, estou assumindo que preciso fazer uma pesquisa regex para algo como:

<section>(any-white-space)<p><b>

Mas não sei bem como fazer isso. Qualquer ajuda seria apreciada.

    
por Citizen 29.01.2014 / 18:35

1 resposta

1

Eu testei isso no jEdit (que também é escrito em Java como o Netbeans, mas eu não tenho acesso ao Netbeans no momento). Tente isto para o padrão regex:

(?<=<section>)(\s*)<p><b>([^<]+)</b></p>

com isso usado como substituto:

$1<h2>$2</h2>

O padrão regex diz "corresponde a uma sequência que é precedida por <section> e começa com qualquer quantidade de espaço em branco (que é armazenado como grupo de captura 1) e contém <p><b> seguido por pelo menos um caractere que não é < (e armazena esses caracteres como grupo de captura 2) e termina com </b></p> ".

O padrão de substituição diz apenas "comece com o espaço em branco do grupo de captura 1 e, em seguida, imprima <h2> e depois os caracteres do grupo de captura 2 que foram encontrados dentro do elemento <b> e, em seguida, imprima </h2> ." Capturar e gerar o espaço em branco significa que o novo elemento h2 começará com as mesmas novas linhas e guias do elemento p, portanto, qualquer formatação bonita não será arruinada pela alteração.

Tenha em mente que o regex não tem como saber onde ele está em relação à estrutura do DOM, portanto não é possível saber se é correto usar h1, h2, h3, h4 e assim por diante. Mas se você precisar apenas de <h2> , experimente.

(Na verdade, se você estiver usando HTML5, poderá iniciar cada novo elemento de seção com um elemento <h1> ou qualquer outro número inicial, e um navegador compatível será necessário para lidar com os níveis de cabeçalho automaticamente.)

    
por 31.01.2014 / 22:04