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.
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:
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 cierrePara reemplazar los caracteres cirílicos por sus equivalentes ASCII, utiliza la siguiente sintaxis en el cuadro de diálogo “Buscar y reemplazar” de Notepad++:
\[([^\]]*?(?:[^\x00-\x7F]|[\u0400-\u04FF])+[^\]]*?)\]
[\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:
\[([^\]]*?(?:[^\x00-\x7F]|[\u0400-\u04FF])+[^\]]*?)\]
[\1]
(o\1
si quieres eliminar los corchetes)¡Espero que esto te ayude!