1

我的 Haskell 应用程序将输入读取为 ByteString 列表,我正在使用 Text.Regex.Posix.ByteString.regexec 来查找匹配项。某些输入有一个字符代码 253(它是一个 IBM PC 字符集中的 1/2 符号),看起来模式是 '.' (即点,“匹配任何字符”)不匹配。有什么办法让它匹配吗?

4

2 回答 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 回答