2013-10-25 51 views
1

我的Haskell應用程序將輸入作爲ByteString的列表讀取,我使用Text.Regex.Posix.ByteString.regexec來查找匹配項。某些輸入有一個字符代碼253(它是一個IBM PC字符集中的1/2符號),看起來模式爲'。'。 (即點「匹配任何字符」)不匹配它。任何方式使它匹配?在Haskell中匹配8位字符Text.Regex.Posix.ByteString

回答

0

這對我的作品在Windows安裝哈斯克爾:

> length $ ((pack ['\1'..'\253']) =~ "." :: [[ByteString]]) 
252 

即點匹配範圍內的所有字符,包括代碼253.

請注意,庫調用底層posix正則表達式匹配器,通常我假設從glibc

所以我會想象你有任何問題將與精確的底層c實施。

類似於Text.Regex.TDFA.ByteString在這種情況下可能會給你更明確的行爲,因爲它全部在Haskell中?

0

這沒有意義。你爲什麼要匹配一個半字符? .將匹配完整的字符。

+0

在某些編碼(如UTF-8)中,它只有半個字符。我正在尋找匹配8位字符。 – Michael