Como remover todas as linhas contendo caracteres não ASCII usando o Notepad ++ ou Emeditor

Como remover todas as linhas contendo caracteres não ASCII usando o Notepad ++ ou Emeditor

Como removo todas as linhas que contêm caracteres de teclado não ASCII?

Eu tentei tantas vezes códigos de expressões regulares, mas nenhum funcionou como deveria. Eu até tentei esse código, [^\x00-\x7F]+mas ele não selecionou todos os caracteres

a ideia que me veio à cabeça é usar desta forma, [^a-z0-9``~!@#$%^&*()-_=+[]{}\|;:'"<>,./?]mas ainda não funcionou porque alguns desses personagens não foram desmarcados como\ / | { } [ ] $ # ^ ( )

  1. Se uma linha contiver algum caractere que não esteja na lista abaixo, desejo removê-lo ou marcá-lo

    0123456789`~!@#$%^&*()-_=+[]{}\/|;:'"<>,.?
    abcdefghijklmnopqrstuvwxyz
    ABCDEFGHIJKLMNOPQRSTUVWXYZ
    
  2. Exemplo simples: Existem mais caracteres como este encontrados aqui:https://en.wikipedia.org/wiki/List_of_Unicode_characters

    0123456789`~!@#$%^&*()-_=+[]{}\|;:'"<>,./?
    abcdefghijklmnopqrstuvwxyz
    ABCDEFGHIJKLMNOPQRSTUVWXYZ
    ¤©ª«¬¯°±²³´µ¶·¸¹º»¼½¾¿÷ÆIJŒœƔƕƋƕ
    ƜƝƢƸƾDžNJNjǽǾǼɁɀȾɎʒəɼʰʲʱʴʳʵʶʷʸˁˀˇˆ˟ˠ
    ˩˧Ͱͱͳʹͼͻͺ͵ͿΏΔΘΞΛΣΠΦΧΨΩΪΫάέήίΰαβδε
    θηκλμξπςρφχψωϊϋϏώϑϐϓϒϔϕϖϠϟϞϝϜϡϢ
    ϤϣϧϫϬϮϯϰϱ₠₡₢₣₤₥₦₧₨₩₪₫€₭₮₯₰₱₲
    ₳₴₵₶₷₸₹₺₻₼₽₾₿⅐⅑⅒⅓⅔⅕⅖⅗⅘⅙⅚⅛⅜
    ⅝⅞⅟℠℡™℣ℤ℥Ω℧ℨ℩KÅℬℭ℮ℯ⇀⇁ↀↁↂↃↄ
    ⇔⇕⇖⇗⇘⇙⇚⇛⇜⇝⇞⇟⇠⇡⇢⇣⇤⇥⇦⇧⇨⅀⅁⅂⅃⅄ⅅ
    ⅆⅇⅈⅉ⅊⅋⅌⅍ⅎ⅏ⅱⅲⅳⅴⅵⅶⅷⅸⅹⅺⅻⅼⅽ
    
  3. Resultado esperado:

    0123456789`~!@#$%^&*()-_=+[]{}\|;:'"<>,./?
    abcdefghijklmnopqrstuvwxyz
    ABCDEFGHIJKLMNOPQRSTUVWXYZ
    

Responder1

[^\x00-\x7F]funciona bem, mas, se você quiser usar uma classe de caracteres longa, [^a-z0-9``~!@#$%^&*()-_=+[]{}\|;:'"<>,./?]precisará escapar de caracteres que tenham um significado especial (ou seja, -[]\e adicionar linebreak \r, \n.

Seu regex se torna:

 [^a-z0-9``~!@#$%^&*()\-_=+\[\]{}\\|;:'"<>,./?\r\n]
 #                    ^    ^ ^   ^            ^^^^

  • Ctrl+H
  • Descubra o que: [^a-z0-9``~!@#$%^&*()\-_=+\[\]{}\\|;:'"<>,./?\r\n]+$ mas, novamente, [^\x00-\x7F]funciona bem e é mais legível
  • Substituir com:LEAVE EMPTY
  • confira Envolver
  • verifique expressão regular
  • Replace all

Resultado para determinado exemplo:

0123456789`~!@#$%^&*()-_=+[]{}\|;:'"<>,./?
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ

Responder2

Se você é agnóstico quanto à solução e não está fixo no Notepad ++, você pode instalar o bash para Win 10, como mostrei aquihttps://superuser.com/a/1252271/715210(desculpe, sempre volto às suas perguntas com soluções alternativas para Linux;))

Eu teria uma solução, onde infelizmente você também perderá o apóstrofo'

  1. abra o bash para Windows no menu iniciar
  2. Vá para a pasta onde seu arquivo está localizado cd /mnt/c/path/folder(a unidade C: está em /mnt/c)
  3. Se o seu arquivo tiver o nomefoo.txt você poderia gerar um arquivobarra.txtcom este comando:

    cat foo.txt | tr -cd '[:alnum:]\n\r~!@#$%^&*()-_=+{}\|;:<>,./?"`' | sed '/^$/d' > bar.txt

Explicação das peças:

cat foo.txtgera o arquivo de texto e com o pipe |a saída é redirecionada para o comando tr -cdque remove todos os caracteres, que não estão na lista após entre '...'. Followed by a pipe tosed to remove the empty lines. Last but not least with> bar.txt` redirecionamos a saída para o arquivobarra.txt

Graças a:

Responder3

No Notepad++ isso é fácil:

  1. cardápioProcurar>Marca...

  2. Descubra o que: [^\x00-\x7F]
    ☑ Marcar linha
    (•) Expressão regular

  3. ImprensaEncontrar tudo

  4. cardápioProcurar>marca páginas>Remover linhas marcadas

informação relacionada