Соответствие определенному символу Юникода в регулярном выражении haskell

Это проблема, связанная с Mac / OSX!

У меня есть следующая трехсимвольная строка haskell:

"a\160b"

Я хочу сопоставить и заменить средний символ

Некоторые подходы, такие как

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"

, не дали желаемого результата.

Как мне изменить регулярное выражение или мою среду, чтобы заменить '\ 160' на 'X'?

Проблема, похоже, связана с корнем в локали / кодировке ввода.

bash> locale
LANG=
LC_COLLATE="C"
LC_CTYPE="UTF-8"
LC_MESSAGES="C"
LC_MONETARY="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_ALL=

Я уже изменил свой .bashrc, чтобы экспортировать следующие 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"

Но это не изменило поведение вообще.

8
задан Axel Tetzlaff 21 February 2011 в 11:17
поделиться