为什么Text.Regex.Posix =〜与\ d匹配字符?

时间:2016-12-04 17:57:50

标签: regex haskell posix

有人可以解释ghci中的这种互动是如何实现的吗?

*Main Text.Regex.Posix> "d1" =~ "\\d" :: String
"d"
*Main Text.Regex.Posix> "d1" =~ "\\d" :: Int
1

我认为\d标有数字,所以我不明白它如何匹配字符d而不是字符串1

注意:使用ghci 7.10.3

1 个答案:

答案 0 :(得分:8)

Text.Regex.Posix module仅支持 c posix regex api 。 POSIX正则表达式语法没有将sequenceU定义为数字的速记字符类,而是具有必须在括号表达式中使用的\d POSIX字符类,例如[:digit:]。但是,使用[[:digit:]]匹配常规ASCII数字会更容易也更短。

要在模式中使用[0-9],您可能需要使用Text.Regex.PCRE