¡Este es un problema relacionado con Mac/OSX!Coincidencia de unicode char específico en haskell regexp
tengo los siguientes tres caracteres de cadena larga Haskell:
"a\160b"
Quiero que busque y sustituya el carácter medio
varios enfoques como
ghci> :m +Text.Regex
ghci> subRegex (mkRegex "\160") "a\160b" "X"
"*** Exception: user error (Text.Regex.Posix.String died: (ReturnCode 17,"illegal byte sequence"))
ghci> subRegex (mkRegex "\\160") "a\160b" "X"
"a\160b"
no dió la deseada resultado.
¿Cómo debo modificar la expresión regular o mi entorno para reemplazar el '\ 160' con la 'X'?
Parece que el problema radica en la configuración regional/codificación de la entrada.
bash> locale
LANG=
LC_COLLATE="C"
LC_CTYPE="UTF-8"
LC_MESSAGES="C"
LC_MONETARY="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_ALL=
ya he modificado mi .bashrc para exportar los siguientes env-Vars:
bash> locale
LANG="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_CTYPE="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_ALL="en_US.UTF-8"
Pero esto no cambió el comportamiento en absoluto.
¿Qué paquete de expresiones regulares está utilizando? Esto funciona para mí: 'Preludio Text.Regex>: m + Text.Regex Preludio Text.Regex> subRegex (mkRegex" \ 160 ")" a \ 160b "" X " " aXb " ' –
''\ 160 '' es '& nbsp', puede haber alguna razón funky arcane Regex.Posix (en particular) no le gusta, como normalizarlo a un espacio normal. – barsoap
Mi primer intento fue con: regex-base-0.93.2, regex-posix-0.94.2, regex-compat-0.93.1. Entonces probé con Text.Regex.TDFA con el mismo resultado. Estoy en una MacBook aquí, aparentemente este código se ejecuta en una máquina Linux, así que sospecho que hay algún problema con las bibliotecas subyacentes –