为什么 Text.Regex.Posix =~ 匹配带有 \d 的字符?

Why Text.Regex.Posix =~ matches characters with \d?

谁能解释一下 ghci 中的这种交互是如何实现的?

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

我认为 \d 代表数字,所以我不明白它如何匹配字符 d 而不是字符串中出现的字符 1

注意:使用 ghci 7.10.3

Text.Regex.Posix module 仅支持 c posix 正则表达式 api。 POSIX 正则表达式语法没有将 \d 定义为数字的 shorthand 字符 class,相反,它具有 [:digit:] POSIX 字符 class 必须在 方括号表达式 内使用,例如[[:digit:]]。但是,使用 [0-9] 匹配常规 ASCII 数字更简单、更短。

要在您的模式中使用 \d,您可能需要使用 Text.Regex.PCRE