Como faço para excluir linhas sem "." no Notepad ++? [duplicado]

11

No Notepad ++, tenho muitas linhas no formato:

abc.xyz

onde "abc" pode ter espaço ou - ou números.

Como faço para excluir linhas sem "."? Portanto, se uma linha não tiver nenhum ".", Quero removê-la completamente, nem mesmo deixar uma linha vazia.

Chen Estat. Yu
fonte

Respostas:

40

Como excluir linhas sem .?

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

  • Defina "Encontre o que" para ^[^\.]*\r\n

    • É possível substituir \r\npor diferentes expressões regulares de EOL (Fim de linha), dependendo dos EOLs do seu arquivo (consulte "Eu tenho um EOL diferente no meu arquivo, o que posso fazer?" E "Não me importo com o que EOLs meu arquivo usa , o que posso fazer? "abaixo).
  • Desmarque "Substituir por"

  • Ativar "Expressão regular"

  • Clique em "Substituir tudo"

    Imagem

Notas:

  • O acima pressupõe que a última linha do arquivo tenha um EOL à direita.

  • O acima também pressupõe que você esteja editando um arquivo de texto com EOLs do Windows \r\n,.

Antes :

abc.xyz
abcdef
abc 123.xyz
abc 123def

Depois :

abc.xyz
abc 123.xyz

Eu tenho uma EOL diferente no meu arquivo, o que posso fazer?

  • O Windows EOL é \r\n.

  • Se você estiver usando arquivos com um EOL diferente, poderá convertê-los em EOLs do Windows usando o Menu "Editar"> "Conversão EOL".

  • Se você não está trabalhando com EOLs do Windows e não deseja convertê-los, use o seguinte:

    • Use em \nvez de \r\npara EOLs do Unix / OS X

    • Use em \rvez de \r\npara EOLs do Mac OS (até a versão 9)


Não sei nem me importo com o que EOLs meu arquivo usa, o que posso fazer?

  • Você pode usar \Rou (?:\r\n?|\n)ou em (?:\r?\n?)vez de \r\n. Isso contorna qualquer problema com os EOLs realmente usados ​​no arquivo.

  • Você também pode usar (?:\r?\n?|$). Essa expressão funcionará se não houver EOL na última linha do arquivo.


Leitura adicional

DavidPostill
fonte
5
Você pode usar \ R para corresponder a qualquer quebra de linha.
user694733
@ user694733 Por favor, explique? \rnão corresponde ao EOL no Windows. Se você remover, \nvocê ficará com linhas em branco. OP afirmou: "Quero removê-lo completamente, nem mesmo deixar uma linha vazia".
DavidPostill
R. maiúsculo N ++ usa PCRE que tem isso como uma classe de caractere especial se minha memória me serve corretamente.
user694733
@ user694733 Ah. ESTÁ BEM. Testei e funciona.
DavidPostill
regex101.com é um site melhor para aprender regex que regexexr
cat
14

A resposta aceita está correta, mas você nem sempre terá a regex pronta. Então, apresento uma solução mais simples.

  1. Ctrl+ F- clique na guia Marcar
  2. Defina "Encontre o que" para .
  3. Marque a opção "Bookmark line" (cortesia de Wrass)
  4. Modo de pesquisa = Normal
  5. Clique em Marcar tudo -> Você deverá ver um círculo azul ao lado dos números de linha marcados.
  6. Em seguida, navegue até o menu Pesquisa -> Favorito -> Remover linhas não marcadas.
Zikato
fonte
Esta é uma alternativa simples e agradável; no entanto, convém mencionar que você também deve marcar a opção 'Linha de marcador' na caixa de diálogo Marcar. Não fazer isso resultará na remoção de todas as linhas.
Wrass
Bom ponto, meu bloco de notas se lembrou da última vez, então eu esqueci disso.
Zikato 22/02
Eu uso regex o tempo todo, mas ainda assim usaria esse método por sua simplicidade. Isenção de responsabilidade: Eu também uso muito as várias funções de marcador no Notepad ++.
JPhi1618
Como você ficou insatisfeito com a sua formatação, enviei uma edição que acho mais agradável. Sinta-se à vontade para rejeitá-lo ou retroceder se não concordar.
Jpmc26