Haskell:
Usando expressões regulares

Como:

Em Haskell, as funcionalidades de regex não fazem parte da biblioteca padrão, necessitando do uso de pacotes de terceiros como regex-base junto com um backend compatível como regex-posix (para suporte a regex POSIX), regex-pcre (para regex compatível com Perl), etc. Veja como você pode usar esses pacotes para trabalhar com expressões regulares.

Primeiro, garanta que você tenha os pacotes instalados adicionando regex-posix ou regex-pcre ao arquivo .cabal do seu projeto ou instalando diretamente via cabal:

cabal install regex-posix

ou

cabal install regex-pcre

Usando regex-posix:

import Text.Regex.Posix ((=~))

-- Verifica se uma string corresponde a um padrão
isMatch :: String -> String -> Bool
isMatch text pattern = text =~ pattern :: Bool

-- Encontra a primeira correspondência
findFirst :: String -> String -> String
findFirst text pattern = text =~ pattern :: String

main :: IO ()
main = do
    print $ isMatch "hello world" "wo"
    -- Saída: True
    print $ findFirst "good morning, good night" "good"
    -- Saída: "good"

Usando regex-pcre:

import Text.Regex.PCRE ((=~))

-- Encontra todas as correspondências
findAll :: String -> String -> [String]
findAll text pattern = text =~ pattern :: [String]

main :: IO ()
main = do
    print $ findAll "test1 test2 test3" "\\btest[0-9]\\b"
    -- Saída: ["test1","test2","test3"]

Cada biblioteca tem suas particularidades, mas a metodologia geral de usar =~ para aplicar a regex permanece consistente, seja verificando por uma correspondência ou extraindo substrings. Escolher entre regex-posix ou regex-pcre depende em grande parte das necessidades do seu projeto e das capacidades específicas de regex requeridas.