为什么 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。
谁能解释一下 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。