мое приложение Haskell читает ввод как список ByteString, и я использую Text.Regex.Posix.ByteString.regexec для поиска совпадений. Некоторый ввод имеет код символа 253 (это 1/2 символа в одном наборе символов IBM PC), и кажется, что шаблон '.' (т. е. точка, «совпадение с любым символом») ему не соответствует. Любой способ сделать это совпадать?
Сопоставление 8-битных символов в Haskell Text.Regex.Posix.ByteString
Ответы (2)
Это работает для меня при установке Windows Haskell:
> length $ ((pack ['\1'..'\253']) =~ "." :: [[ByteString]])
252
т.е. точка соответствует всем символам в диапазоне, включая код 253.
Обратите внимание, что библиотека обращается к базовому сопоставителю регулярных выражений posix, как я полагаю, обычно из glibc
.
Поэтому я полагаю, что любая проблема, с которой вы столкнетесь, будет связана с этой точной базовой реализацией c.
Что-то вроде Text.Regex.TDFA.ByteString
может дать вам более четкое поведение в этом случае, поскольку все это на Haskell?
person
sclv
schedule
26.03.2015
Это не имеет смысла. Почему вы хотите сопоставить половину символа? .
будет соответствовать полному символу.
person
David Knipe
schedule
25.10.2013
В некоторых кодировках, таких как UTF-8, это всего лишь половина символа. Я ищу соответствие 8-битным символам.
- person Michael restore Monica Cellio; 25.10.2013