Comment supprimer tous les caractères non ASCII avec regex et Notepad ++?

147

J'ai beaucoup cherché, mais il n'est écrit nulle part comment supprimer les caractères non ASCII de Notepad ++.

J'ai besoin de savoir quelle commande écrire dans rechercher et remplacer (avec une image, ce serait génial).

  • Si je veux créer une liste blanche et mettre en signet tous les mots / lignes ASCII afin que les lignes non ASCII ne soient pas marquées

  • Si le fichier est assez volumineux et ne peut pas sélectionner toutes les lignes ASCII et que vous souhaitez simplement sélectionner les lignes contenant des caractères non ASCII ...

Texh
la source

Réponses:

263

Cette expression recherchera les valeurs non ASCII:

[^\x00-\x7F]+

Cochez «Mode de recherche = Expression régulière», puis cliquez sur Find Next.

Source: Regex tout caractère ASCII

ProGM
la source
4
et juste au cas où ce ne serait pas évident, si vous supprimez le "^", vous recherchez les lignes ASCII
Mike M
7
Fonctionne bien, mais je devais régler Encoding->Encode in ANSI. N'a rien pu trouver autrement.
FoamyGuy
1
Fonctionne parfaitement dans netbeans avec son option de recherche d'expression régulière (bouton
astérix
fonctionne dans VS-Code, n'oubliez pas de cliquer sur l'option de recherche Regex!
yashhy
4
Si vous souhaitez conserver \ r et \ n - caractères de retour chariot et de saut de ligne - vous pouvez utiliser cette expression régulière: [\ x00- \ x09 \ x0B- \ x0C \ x0E- \ x1F] +
Steffen Winkler
53

Dans Notepad ++, si vous allez dans le menu RechercheRechercher des caractères dans la plageCaractères non-ASCII (128-255), vous pouvez alors parcourir le document jusqu'à chaque caractère non-ASCII.

Assurez-vous de cocher « Wrap around » si vous souhaitez effectuer une boucle dans le document pour tous les caractères non ASCII.

capture d'écran "Find in Range"

Anon Y. Mous
la source
3
Cela fonctionne bien, mais ne montre pas tous les résultats dans une liste et aucune option «remplacer»
Alex
Chouette ... parce que j'oublie toujours le regex pour le non-ASCII et je dois le chercher sur Google à chaque fois pour revenir à cette page :)
Jean-François T.
27

En plus de la réponse de ProGM, si vous voyez des caractères dans des cases comme NUL ou ACK et que vous voulez vous en débarrasser, ce sont des caractères de contrôle ASCII (0 à 31), vous pouvez les trouver avec l'expression suivante et les supprimer:

[\x00-\x1F]+

Afin de supprimer tous les caractères de contrôle non-ASCII ET ASCII, vous devez supprimer tous les caractères correspondant à cette expression régulière:

[^\x1F-\x7F]+
Brunorey
la source
Les valeurs de \x00et \x1Fsont déjà mises en correspondance dans la réponse par ProGM.
Unihedron
2
Ils correspondent aux valeurs que vous souhaitez conserver. Je suggérais simplement ceci au cas où vous voudriez vous en débarrasser.
brunorey
Le dernier exemple doit commencer à 20 pour exclure le caractère séparateur d'unité. Peut-être exclure 7F ainsi que c'est aussi un caractère de contrôle.
fgb
Brillant! J'ai supprimé tous les caractères non ASCII embêtants à l'aide du package qdap R en utilisant:mgsub("[^\x1F-\x7F]+", "", text_vector, fixed = FALSE)
Pablo Adames
22

Pour supprimer tous les caractères non ASCII, vous pouvez utiliser le remplacement suivant: [^\x00-\x7F]+

Suppression de non-ASCII

Pour mettre en évidence les caractères, je recommande d'utiliser la fonction Marquer dans la fenêtre de recherche: cela met en évidence les caractères non-ASCII et mettre un signet dans les lignes contenant l'un d'entre eux

Si vous souhaitez mettre en évidence et mettre un signet sur les caractères ASCII à la place, vous pouvez utiliser l'expression régulière [\x00-\x7F]pour le faire.

Mise en évidence non-ASCII

À votre santé

Jean-François T.
la source
1
si vous voulez copypaste l'expression de recherche [^ \ x00- \ x7F] +
hyène
2
Si vous souhaitez conserver \ r et \ n - caractères de retour chariot et de saut de ligne - vous pouvez utiliser cette expression régulière: [\ x00- \ x09 \ x0B- \ x0C \ x0E- \ x1F] +
Steffen Winkler
4

Pour conserver de nouvelles lignes:

  1. Sélectionnez d'abord un caractère pour la nouvelle ligne ... J'ai utilisé #.
  2. Sélectionnez l'option de remplacement, étendue.
  3. entrée \ n remplacer par #
  4. Appuyez sur Remplacer tout

Prochain:

  1. Sélectionnez l'option Remplacer Expression régulière.
  2. Saisissez ceci: [^ \ x20- \ x7E] +
  3. Garder remplacer par vide
  4. Appuyez sur Remplacer tout

Maintenant, sélectionnez l'option Remplacer étendue et remplacez # par \ n

:) maintenant, vous avez un fichier ASCII propre;)

TooGeeky
la source
3

Une autre bonne astuce consiste à passer en mode UTF8 dans votre éditeur afin que vous puissiez réellement voir ces personnages amusants et les supprimer vous-même.

Gidon Wise
la source
1

Autrement...

  1. Installez le plugin Text FX si vous ne l'avez pas déjà
  2. Accédez à l'option de menu TextFX -> zappez tous les caractères non imprimables sur #. Il remplacera tous les caractères invalides par 3 # symboles
  3. Accédez à Rechercher / Remplacer et recherchez ###. Remplacez-le par un espace.

C'est bien si vous ne vous souvenez pas de l'expression régulière ou que vous ne vous souciez pas de la rechercher. Mais le regex mentionné par d'autres est également une bonne solution.

goku_da_master
la source
Zapper tous les caractères remplace tous les types de signes de ponctuation par ###. La solution à laquelle je m'attendrais est la suivante: Remplacer «&» par «. Remplacer« & »par». Etc.
Kasim Husaini
Cela fonctionne bien, cependant, l'outil remplace les caractères amusants par un caractère # et non par trois. Prenez des notes s'il vous plaît.
Raghav
1
Le plugin Text FX est obsolète et peut même ne plus être facilement disponible. Voir par exemple le futur de TextFX - "Lorsque la liste s'allongera suffisamment, il deviendra pratique de dire adieu à un bourreau de travail vieillissant qui a bien servi la communauté."
Peter Mortensen