我的 Haskell 应用程序将输入读取为 ByteString 列表,我正在使用 Text.Regex.Posix.ByteString.regexec 来查找匹配项。某些输入有一个字符代码 253(它是一个 IBM PC 字符集中的 1/2 符号),看起来模式是 '.' (即点,“匹配任何字符”)不匹配。有什么办法让它匹配吗?
问问题
191 次
2 回答
0
那没有意义。为什么要匹配一个半字符?.
将匹配完整的字符。
于 2013-10-25T07:29:05.883 回答
0
这适用于 Windows Haskell 安装:
> length $ ((pack ['\1'..'\253']) =~ "." :: [[ByteString]])
252
即点匹配范围内的所有字符,包括代码 253。
请注意,该库调用底层 posix 正则表达式匹配器,我假设通常来自glibc
.
因此,我想您遇到的任何问题都与该精确的底层 c 实现有关。
在这种情况下,类似的东西Text.Regex.TDFA.ByteString
可能会给你更清晰的行为,因为它都在 Haskell 中?
于 2015-03-26T16:08:18.937 回答