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.

Cómo insertar símbolos en una cadena de texto usando regex en Atom (Mac OS)

Necesito insertar un prefijo en una cadena hexadecimal antes de cada 2 caracteres.
Mi primera idea fue usar un lookaround como

(?=[0-9a-f]{2})

pero obviamente no funcionará porque encuentra cada posición que tiene dos símbolos después, no cada otra posición.
La línea es:

d0bfd0bed181d182d183d0bfd0b8d0bbd0be

Puedo usar (?=d[01]) y (?<=d[01]) porque la línea solo contiene letras cirílicas minúsculas, pero si es posible, necesito una solución más universal.

Otro problema es que Atom editor, aparentemente, no puede insertar nada en un espacio negativo encontrado por una expresión lookaround. La sustitución funciona con regex de posición como ^ o $, pero no con expresiones de lookaround/lookbehind.

Si no se puede realizar en Atom, por favor recomiende un buen editor de código y texto para Mac OS que comprenda regex con sabor a Perl para la edición.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para insertar un prefijo en una cadena hexadecimal antes de cada 2 caracteres, puedes usar el siguiente patrón de regex:

    s/(\w{2})/\x{prefijo}$1/g
    

    Sustituye \x{prefijo} por el prefijo deseado.

    Por ejemplo, para insertar 0x antes de cada 2 caracteres en la siguiente línea:

    d0bfd0bed181d182d183d0bfd0b8d0bbd0be
    

    Puedes usar el patrón de regex:

    s/(\w{2})/0x$1/g
    

    Esto resultaría en la siguiente línea:

    0xd0x0b0xfd0x0b0xed0x0x81d0x0x82d0x0x83d0x0xbf0x0b0x8d0x0xbb0x0xbe
    

    En cuanto al problema con el editor Atom, parece que Atom no admite insertar texto en un espacio negativo encontrado por una expresión de lookaround. Puedes intentar usar otros editores como Sublime Text o Visual Studio Code que admiten regex de sabor Perl para editar.

    Alternativamente, puedes usar una herramienta de línea de comandos como sed o awk para realizar la operación deseada en el archivo de texto.

Comments are closed.