Como adicionar uma nova linha quando uma expressão é encontrada em um arquivo de texto?

0

Eu tenho a fonte da página de um site, mas os links de que preciso estão agrupados. Como eu separo cada link, um link por linha, se todos começam com href?

    
por user1883614 07.12.2012 / 23:41

1 resposta

2

Existem várias maneiras de fazer isso. Por exemplo, você pode escrever um pequeno programa ou script para fazer o trabalho, ou usar um editor de texto capaz de formatar HTML, ou um que possa fazer uma pesquisa / substituição usando expressões regulares . Mostrarei as duas últimas opções, usando jEdit ( sudo apt-get install jedit ), embora haja muitos outros editores que você possa usar.

Formatar automaticamente o texto HTML

Você precisará de um dos plugins "Beleza" ou "XML" para o jEdit. Em jEdit, vá para "Plugins" - > "Plugin Manager ...", aba "Instalar", marque "Beleza" ou "XML", clique no botão "Instalar". Se você for agora para a aba "Gerenciar", o (s) plugin (s) devem estar listados lá.

Para usar o Beauty, você precisa ter certeza de que o formatador html está selecionado. Vá para "Plug-ins" - > "Opções de Plugin ...". Na árvore esquerda, abra "Plugins" / "Beauty" / "Modes". Na lista à direita, selecione Beautifier html: beauty para Mode html.

CliqueOK.Agoraabraseuarquivoeverifiqueseomododeediçãoéhtml(barradestatus,cantoinferioresquerdo)

Execute o plug-in acessando "Plugins" - > [iniciais] - > "Beleza" - > "Beautify Buffer".

Ou, para usar XML, basta acessar "Plug-ins" - > [iniciais] - > "XML" - > "XML de recuo".

Pesquisar / substituir usando expressões regulares

Carregue seu arquivo no jEdit, pressione Ctrl + F para abrir a caixa de diálogo "Pesquisar e substituir" e altere as opções para que fique assim:

Ouseja:pesquisepor:(<a(?:\s+[^>]*)?>.*?</a>).Substituapor:\n$1\n.Tenhacuidadoparaque"Expressões regulares" seja verificado. Agora pressione "Replace All" e todos os links devem receber uma nova linha antes e depois. Se você quiser a nova linha somente antes do link, substitua por \n$1 ; se você quiser apenas depois, substitua por $1\n . Aqui está a referência de expressões regulares em jEdit.

Eu testei a substituição com:

<h1><a name="top"></a>Test</h1>
<div><a href="#top" title="link #1"><strong><em>first</em> link</strong></a><a href="page.html">page</a><!-- empty --><a href="l1.html"></a><abbr title="something">smt</abbr><p>more <a title="" href="#c3"> third </a> text</p></div>

O que resultou em:

<h1>
<a name="top"></a>
Test</h1>
<div>
<a href="#top" title="link #1"><strong><em>first</em> link</strong></a>

<a href="page.html">page</a>
<!-- empty -->
<a href="l1.html"></a>
<abbr title="something">smt</abbr><p>more 
<a title="" href="#c3"> third </a>
 text</p></div>
    
por sierrasdetandil 08.12.2012 / 03:15