¿Cómo elimino todos los caracteres no ASCII con regex y Notepad ++?


147

Busqué mucho, pero en ninguna parte está escrito cómo eliminar caracteres no ASCII de Notepad ++.

Necesito saber qué comando escribir en buscar y reemplazar (con la imagen sería genial).

  • Si quiero hacer una lista blanca y marcar todas las palabras / líneas ASCII para que las líneas no ASCII no estén marcadas

  • Si el archivo es bastante grande y no puede seleccionar todas las líneas ASCII y solo desea seleccionar las líneas que contienen caracteres no ASCII ...

Respuestas:


263

Esta expresión buscará valores no ASCII:

[^\x00-\x7F]+

Marque 'Modo de búsqueda = Expresión regular' y haga clic Find Next.

Fuente: Regex cualquier carácter ASCII


44
y en caso de que no sea obvio, si elimina el "^" está buscando las líneas ASCII
Mike M

77
Funciona bien, pero tuve que configurar Encoding->Encode in ANSI. No pude encontrar nada de otra manera.
FoamyGuy

1
Funciona perfectamente en netbeans con su opción regexp-search (botón asterix)
Teson

funciona en VS-Code, ¡no olvides hacer clic en la opción de búsqueda Regex!
yashhy

44
Si desea mantener \ r y \ n - caracteres de retorno de carro y salto de línea - puede usar esta expresión regular: [\ x00- \ x09 \ x0B- \ x0C \ x0E- \ x1F] +
Steffen Winkler

53

En Notepad ++, si va al menú BuscarBuscar caracteres en el rangoCaracteres no ASCII (128-255) , puede pasar por el documento a cada carácter no ASCII.

Asegúrese de marcar " Ajustar " si desea hacer un bucle en el documento para todos los caracteres no ASCII.

captura de pantalla "Buscar en el rango"


3
Esto funciona bien, pero no muestra todos los resultados en una lista y no hay opción de "reemplazar"
Alex

Genial ... porque siempre olvido la expresión regular para los no ASCII y tengo que buscarla en Google cada vez para volver a esta página :)
Jean-Francois T.

27

Además de la respuesta de ProGM, en caso de que vea caracteres en cuadros como NUL o ACK y quiera deshacerse de ellos, esos son caracteres de control ASCII (0 a 31), puede encontrarlos con la siguiente expresión y eliminarlos:

[\x00-\x1F]+

Para eliminar todos los caracteres de control que no sean ASCII Y ASCII, debe eliminar todos los caracteres que coincidan con esta expresión regular:

[^\x1F-\x7F]+

Los valores de \x00y \x1Fya coinciden en la respuesta de ProGM.
Unihedron

2
Se corresponden con los valores que desea mantener. Solo estaba sugiriendo esto en caso de que quieras deshacerte de ellos.
brunorey

El último ejemplo debería comenzar en 20 para excluir el carácter separador de unidad. Tal vez excluya 7F, así como también es un personaje de control.
fgb

¡Brillante! Eliminé todos los molestos caracteres no ASCII usando el paquete qdap R usando:mgsub("[^\x1F-\x7F]+", "", text_vector, fixed = FALSE)
Pablo Adames

22

Para eliminar todos los caracteres no ASCII, puede usar el siguiente reemplazo: [^\x00-\x7F]+

Eliminar no ASCII

Para resaltar caracteres, recomiendo usar la función Marcar en la ventana de búsqueda: esto resalta los caracteres que no son ASCII y pone un marcador en las líneas que contienen uno de ellos

Si desea resaltar y poner un marcador en los caracteres ASCII, puede usar la expresión regular [\x00-\x7F]para hacerlo.

Destacando no ASCII

Salud


1
si desea copiar y pegar la expresión de búsqueda [^ \ x00- \ x7F] +
hiena

2
Si desea mantener \ r y \ n - caracteres de retorno de carro y salto de línea - puede usar esta expresión regular: [\ x00- \ x09 \ x0B- \ x0C \ x0E- \ x1F] +
Steffen Winkler

4

Para mantener nuevas líneas:

  1. Primero seleccione un personaje para la nueva línea ... Usé #.
  2. Seleccione la opción de reemplazo, extendida.
  3. entrada \ n reemplazar con #
  4. Hit Reemplazar todo

Próximo:

  1. Seleccione la opción Reemplazar Expresión regular.
  2. Ingrese esto: [^ \ x20- \ x7E] +
  3. Mantener reemplazar con vacío
  4. Hit Reemplazar todo

Ahora, seleccione la opción Reemplazar Extendida y Reemplace # con \ n

:) ahora, tienes un archivo ASCII limpio;)


3

Otro buen truco es ir al modo UTF8 en su editor para que pueda ver estos divertidos personajes y eliminarlos usted mismo.


1

De otra manera...

  1. Instale el complemento Text FX si aún no lo tiene
  2. Vaya a la opción de menú TextFX -> elimine todos los caracteres no imprimibles a #. Reemplazará todos los caracteres no válidos con símbolos 3 #
  3. Vaya a Buscar / reemplazar y busque ###. Reemplácelo con un espacio.

Esto es bueno si no puedes recordar la expresión regular o no te importa buscarla. Pero la expresión regular mencionada por otros también es una buena solución.


Zapping todos los caracteres reemplaza todo tipo de signos de puntuación con ###. La solución que esperaría es: Reemplazar “&” con ". Reemplazar '&' con '. Etc.
Kasim Husaini

Funciona bien, sin embargo, la herramienta reemplaza los caracteres divertidos con un # carácter y no tres. por favor tome nota.
Raghav

1
El complemento Text FX está en desuso y es posible que ya no esté disponible. Vea, por ejemplo, el futuro de TextFX : "Cuando la lista crezca lo suficiente, será práctico despedirse de un caballo de batalla que ha servido bien a la comunidad".
Peter Mortensen
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.