Haskell:
Säännöllisten lausekkeiden käyttö
Kuinka:
Haskellissa säännöllisen lausekkeen toiminnot eivät kuulu vakio kirjastoon, joten on tarpeen käyttää kolmannen osapuolen paketteja kuten regex-base
yhdessä yhteensopivan taustajärjestelmän kanssa kuten regex-posix
(POSIX-yhteensopivaa regex-tukea varten), regex-pcre
(Perl-yhteensopivaa regex-tukea varten), jne. Tässä on, miten voit käyttää näitä paketteja työskennelläksesi säännöllisten lausekkeiden kanssa.
Ensin, varmista että sinulla on paketit asennettuna lisäämällä regex-posix
tai regex-pcre
projektisi .cabal
tiedostoon tai asentamalla suoraan cabalin kautta:
cabal install regex-posix
tai
cabal install regex-pcre
Käyttäen regex-posix
:
import Text.Regex.Posix ((=~))
-- Tarkista, vastaako merkkijono kaavaa
isMatch :: String -> String -> Bool
isMatch teksti kaava = teksti =~ kaava :: Bool
-- Etsi ensimmäinen vastaavuus
findFirst :: String -> String -> String
findFirst teksti kaava = teksti =~ kaava :: String
main :: IO ()
main = do
print $ isMatch "hello world" "wo"
-- Tuloste: True
print $ findFirst "good morning, good night" "good"
-- Tuloste: "good"
Käyttäen regex-pcre
:
import Text.Regex.PCRE ((=~))
-- Etsi kaikki vastaavuudet
findAll :: String -> String -> [String]
findAll teksti kaava = teksti =~ kaava :: [String]
main :: IO ()
main = do
print $ findAll "test1 test2 test3" "\\btest[0-9]\\b"
-- Tuloste: ["test1","test2","test3"]
Kullakin kirjastolla on omat erityispiirteensä, mutta yleinen metodologia =~
käytön kanssa regexin soveltamiseksi pysyy johdonmukaisena, oli kyseessä sitten vastaavuuden tarkistus tai alimerkkijonojen poiminta. Valinta regex-posix
ja regex-pcre
välillä riippuu suuresti projektisi tarpeista ja vaaditusta erityisestä regex-ominaisuudesta.