Haskell:
Utilizzo delle espressioni regolari
Come fare:
In Haskell, le funzionalità regex non fanno parte della libreria standard, rendendo necessario l’uso di pacchetti di terze parti come regex-base
insieme a un backend compatibile come regex-posix
(per il supporto regex POSIX), regex-pcre
(per regex compatibili con Perl), ecc. Ecco come puoi utilizzare questi pacchetti per lavorare con le espressioni regolari.
Prima di tutto, assicurati di avere i pacchetti installati aggiungendo regex-posix
o regex-pcre
al file .cabal
del tuo progetto o installandoli direttamente tramite cabal:
cabal install regex-posix
oppure
cabal install regex-pcre
Utilizzando regex-posix
:
import Text.Regex.Posix ((=~))
-- Verifica se una stringa corrisponde a un modello
isMatch :: String -> String -> Bool
isMatch testo modello = testo =~ modello :: Bool
-- Trova la prima corrispondenza
findFirst :: String -> String -> String
findFirst testo modello = testo =~ modello :: String
main :: IO ()
main = do
print $ isMatch "ciao mondo" "mo"
-- Output: True
print $ findFirst "buongiorno, buonanotte" "buon"
-- Output: "buon"
Utilizzando regex-pcre
:
import Text.Regex.PCRE ((=~))
-- Trova tutte le corrispondenze
findAll :: String -> String -> [String]
findAll testo modello = testo =~ modello :: [String]
main :: IO ()
main = do
print $ findAll "test1 test2 test3" "\\btest[0-9]\\b"
-- Output: ["test1","test2","test3"]
Ogni libreria ha le sue particolarità, ma la metodologia generale di utilizzo di =~
per applicare la regex rimane consistente, sia che si tratti di verificare una corrispondenza o di estrarre sottostringhe. La scelta tra regex-posix
o regex-pcre
dipende in gran parte dalle esigenze del tuo progetto e dalle specifiche capacità regex richieste.