es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Identificar y reemplazar los caracteres no ASCII entre corchetes.

Tengo etiquetas (solo caracteres ASCII dentro de corchetes) con la siguiente estructura: [Root.GetSomething], sin embargo, algunos colaboradores terminaron enviando contribuciones con caracteres cirílicos que se parecen a los caracteres latinos, por ejemplo, [Rооt.GеtSоmеthіng].
Necesito localizar y luego reemplazar esas inconsistencias con los caracteres ASCII correspondientes dentro de los corchetes.

Intenté con \[([АаІіВСсЕеРТтОоКкХхМ]+)\]; (\[)([^\x00-\x7F]+)(\]), y algunas variaciones del rango, pero esas búsquedas no encuentran ninguna coincidencia. Parece que me falta algo importante en la lógica de ejecución de regex.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Como experto en TI especializado en regex y Notepad++, te sugiero utilizar el siguiente patrón de regex para localizar y reemplazar inconsistencias con caracteres ASCII coincidentes dentro de los corchetes:

    \[([^\]]*?(?:[^\x00-\x7F]|[\u0400-\u04FF])+[^\]]*?)\]
    

    Este patrón coincidirá con cualquier carácter ASCII o cirílico dentro de los corchetes, sin importar la mayúscula o minúscula de las letras. Aquí tienes un desglose del patrón:

    • \[ coincide con el corchete de apertura
    • ([^\]]*?) es un grupo de captura que recoge cualquier carácter que no sean corchetes de cierre, cero o más veces
    • (?:[^\x00-\x7F]|\[\u0400-\u04FF]) es un grupo sin captura que coincide con cualquier carácter no ASCII o cualquier carácter cirílico
    • + significa que el grupo sin captura debe repetirse al menos una vez
    • [^\]]*? es otro grupo de captura que recoge cualquier carácter que no sean corchetes de cierre, cero o más veces pero lo menos posible
    • \] coincide con el corchete de cierre

    Para reemplazar los caracteres cirílicos por sus equivalentes ASCII, utiliza la siguiente sintaxis en el cuadro de diálogo “Buscar y reemplazar” de Notepad++:

    • Buscar: \[([^\]]*?(?:[^\x00-\x7F]|[\u0400-\u04FF])+[^\]]*?)\]
    • Reemplazar por: [\1]

    Esto reemplazará la etiqueta completa con los caracteres ASCII que coinciden con los caracteres cirílicos. Si solo deseas reemplazar los caracteres cirílicos, puedes modificar el patrón de reemplazo:

    • Buscar: \[([^\]]*?(?:[^\x00-\x7F]|[\u0400-\u04FF])+[^\]]*?)\]
    • Reemplazar por: [\1] (o \1 si quieres eliminar los corchetes)

    ¡Espero que esto te ayude!

Comments are closed.