有人可以解释ghci中的这种互动是如何实现的吗?
*Main Text.Regex.Posix> "d1" =~ "\\d" :: String
"d"
*Main Text.Regex.Posix> "d1" =~ "\\d" :: Int
1
我认为\d
标有数字,所以我不明白它如何匹配字符d
而不是字符串1
。
注意:使用ghci 7.10.3
答案 0 :(得分:8)
Text.Regex.Posix
module仅支持 c posix regex api 。 POSIX正则表达式语法没有将sequenceU
定义为数字的速记字符类,而是具有必须在括号表达式中使用的\d
POSIX字符类,例如[:digit:]
。但是,使用[[:digit:]]
匹配常规ASCII数字会更容易也更短。
要在模式中使用[0-9]
,您可能需要使用Text.Regex.PCRE。