2017-10-17 3 views

Répondre

0

L'utilisation d'un préfixe ?i: pour indiquer une expression régulière insensible à la casse ne fait pas partie de la norme POSIX pour les expressions régulières et n'est pas prise en charge par Text.Regex.Posix. Au lieu de cela, vous devez spécifier un indicateur lorsque l'expression régulière est compilée. Cela signifie que vous ne pouvez pas utiliser l'opérateur =~, car cet opérateur utilise toujours les indicateurs de compilation par défaut.

Au lieu de cela, vous voudrez probablement définir une fonction d'assistance:

{-# 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 

et vous pouvez écrire:

> match (makeIRegex "a") "a" :: Bool 
True 
> match (makeIRegex "a") "A" :: Bool 
True 
>