我知道posix正则表达式使用?我忽略大写或小写
但是当我测试它时:
"a" =~ "?i:a" :: Bool
我收到了错误。
如何正确写作?
答案 0 :(得分:0)
使用?i:
前缀表示不区分大小写的正则表达式不是正则表达式的POSIX标准的一部分,Text.Regex.Posix
不支持它。相反,您需要在编译正则表达式时指定标志。这意味着您无法使用=~
运算符,因为该运算符始终使用默认编译标志。
相反,您可能想要定义辅助函数:
{-# LANGUAGE FlexibleContexts #-}
import Data.Bits
import Text.Regex.Posix
-- | Compile a case-insensitive regular expression.
makeIRegex :: RegexMaker Regex CompOption ExecOption source => source -> Regex
makeIRegex = makeRegexOpts (defaultCompOpt .|. compIgnoreCase) defaultExecOpt
然后你可以写:
> match (makeIRegex "a") "a" :: Bool
True
> match (makeIRegex "a") "A" :: Bool
True
>