为什么Text.Regex.Posix=~将字符与\d匹配?
有人能解释一下ghci中的这种互动是如何可能的吗为什么Text.Regex.Posix=~将字符与\d匹配?,regex,haskell,posix,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时,仅支持c posix正则表达式api。POSIX正则表达式语法没有将\d定义为数字的速记字符类,相反,它具有必须在括号表达式中使
*Main Text.Regex.Posix> "d1" =~ "\\d" :: String
"d"
*Main Text.Regex.Posix> "d1" =~ "\\d" :: Int
1
我认为\d
代表数字,因此我不明白它如何匹配字符串中的字符d
,而不是字符1
注意:使用ghci 7.10.3时,仅支持c posix正则表达式api。POSIX正则表达式语法没有将\d
定义为数字的速记字符类,相反,它具有必须在括号表达式中使用的[:digit:
POSIX字符类,例如[:digit:]
。但是,使用[0-9]
匹配常规ASCII数字更容易、更短
要在模式中使用
\d
,您可能需要使用。\d
在POSIX正则表达式中并不意味着任何特殊的内容。它只匹配d
。试试[[:digit:]
。哦,这些括号!非常感谢。