Come rimuovo tutti i caratteri non ASCII con regex e Notepad ++?


147

Ho cercato molto, ma da nessuna parte è scritto come rimuovere caratteri non ASCII da Notepad ++.

Ho bisogno di sapere quale comando scrivere in trova e sostituisci (con l'immagine sarebbe fantastico).

  • Se voglio creare una lista bianca e aggiungere tutte le parole / linee ASCII ai segnalibri in modo che le linee non ASCII non siano contrassegnate

  • Se il file è abbastanza grande e non può selezionare tutte le righe ASCII e vuoi solo selezionare le righe contenenti caratteri non ASCII ...

Risposte:


263

Questa espressione cercherà valori non ASCII:

[^\x00-\x7F]+

Spuntare "Modalità di ricerca = espressione regolare" e fare clic Find Next.

Fonte: Regex qualsiasi carattere ASCII


4
e nel caso in cui non sia ovvio, se rimuovi "^" stai cercando le righe ASCII
Mike M

7
Funziona bene, ma ho dovuto impostare Encoding->Encode in ANSI. Non è stato possibile trovare nulla altrimenti.
Foamy Acquista il

1
Funziona perfettamente su netbeans con la sua opzione di ricerca regexp (pulsante asterix)
Teson,

funziona in VS-Code, non dimenticare di fare clic sull'opzione di ricerca Regex!
yashhy,

4
Se vuoi mantenere \ r e \ n - caratteri di ritorno a capo e avanzamento riga - puoi utilizzare questa regex: [\ x00- \ x09 \ x0B- \ x0C \ x0E- \ x1F] +
Steffen Winkler

53

In Notepad ++, se si seleziona il menu CercaTrova caratteri nell'intervalloCaratteri non ASCII (128-255), è possibile scorrere il documento fino a ciascun carattere non ASCII.

Assicurati di spuntare " Wrap around " se vuoi eseguire il loop nel documento per tutti i caratteri non ASCII.

screenshot "Trova nel raggio di azione"


3
Funziona bene, ma non mostra tutti i risultati in un elenco e nessuna opzione di "sostituzione"
Alex

Pulito ... perché dimentico sempre la regex per la non-ASCII e devo cercarla su Google ogni volta per tornare a questa pagina :)
Jean-Francois T.

27

Oltre alla risposta di ProGM, nel caso in cui vedi caratteri in caselle come NUL o ACK e desideri sbarazzartene, questi sono caratteri di controllo ASCII (da 0 a 31), puoi trovarli con la seguente espressione e rimuoverli:

[\x00-\x1F]+

Per rimuovere tutti i caratteri di controllo non ASCII E ASCII, è necessario rimuovere tutti i caratteri corrispondenti a questa regex:

[^\x1F-\x7F]+

I valori da \x00e \x1Fsono già associati alla risposta di ProGM.
Unihedron,

2
Sono abbinati come valori che desideri mantenere. Stavo solo suggerendo questo nel caso in cui tu volessi sbarazzartene.
brunorey,

L'ultimo esempio dovrebbe iniziare da 20 per escludere il carattere separatore unità. Forse escludi 7F e anche un personaggio di controllo.
fgb,

Brillante! Ho rimosso tutti i fastidiosi caratteri non ASCII usando il pacchetto qdap R usando:mgsub("[^\x1F-\x7F]+", "", text_vector, fixed = FALSE)
Pablo Adames il

22

Per rimuovere tutti i caratteri non ASCII, è possibile utilizzare la seguente sostituzione: [^\x00-\x7F]+

Rimozione non ASCII

Per evidenziare i caratteri, ti consiglio di usare la funzione Segna nella finestra di ricerca: evidenzia i caratteri non ASCII e metti un segnalibro nelle righe che contengono uno di essi

Se invece vuoi evidenziare e mettere un segnalibro sui caratteri ASCII, puoi usare la regex [\x00-\x7F]per farlo.

Evidenziando Non ASCII

Saluti


1
se si desidera copiare nuovamente l'espressione di ricerca [^ \ x00- \ x7F] +
hyena

2
Se vuoi mantenere \ r e \ n - caratteri di ritorno a capo e avanzamento riga - puoi utilizzare questa regex: [\ x00- \ x09 \ x0B- \ x0C \ x0E- \ x1F] +
Steffen Winkler

4

Per mantenere nuove linee:

  1. Prima seleziona un personaggio per la nuova riga ... Ho usato #.
  2. Seleziona l'opzione di sostituzione, estesa.
  3. input \ n sostituisci con #
  4. Premi Sostituisci tutto

Il prossimo:

  1. Selezionare l'opzione Sostituisci espressione regolare.
  2. Immettere questo: [^ \ x20- \ x7E] +
  3. Mantieni Sostituisci con vuoto
  4. Premi Sostituisci tutto

Ora, selezionare l'opzione Sostituisci estesa e Sostituisci # con \ n

:) ora, hai un file ASCII pulito;)


3

Un altro buon trucco è entrare in modalità UTF8 nel tuo editor in modo da poter effettivamente vedere questi personaggi divertenti ed eliminarli da soli.


1

Un altro modo...

  1. Installa il plug-in Text FX se non lo hai già
  2. Vai all'opzione di menu TextFX -> sposta tutti i caratteri non stampabili su #. Sostituirà tutti i caratteri non validi con simboli 3 #
  3. Vai su Trova / Sostituisci e cerca ###. Sostituiscilo con uno spazio.

Questo è bello se non ricordi il regex o non ti importa di cercarlo. Ma la regex citata da altri è anche una bella soluzione.


Zappare tutti i caratteri sostituisce tutti i tipi di segni di punteggiatura con ###. La soluzione che mi aspetterei è: sostituire "&" con ". Sostituire '&' con '. Ecc.
Kasim Husaini,

Funziona bene, tuttavia, lo strumento sostituisce i caratteri divertenti con un carattere # e non tre. per favore prendere nota.
Raghav,

1
Il plug-in Text FX è obsoleto e potrebbe non essere più disponibile. Vedi ad esempio il futuro di TextFX - "Quando l'elenco cresce abbastanza a lungo, diventa pratico dire addio a un cavallo di lavoro che invecchia e che ha servito bene la comunità".
Peter Mortensen,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.