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 Cerca → Trova caratteri nell'intervallo → Caratteri 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.