Haskell:
Korzystanie z wyrażeń regularnych
Jak to zrobić:
W Haskell funkcjonalności regex nie są częścią standardowej biblioteki, co wymaga używania pakietów stron trzecich takich jak regex-base
wraz z kompatybilnym backendem jak regex-posix
(dla wsparcia POSIX regex), regex-pcre
(dla kompatybilnych z Perlem regex) itp. Oto jak możesz używać tych pakietów do pracy z wyrażeniami regularnymi.
Najpierw upewnij się, że masz zainstalowane pakiety, dodając regex-posix
lub regex-pcre
do pliku .cabal
twojego projektu lub instalując bezpośrednio przez cabal:
cabal install regex-posix
lub
cabal install regex-pcre
Użycie regex-posix
:
import Text.Regex.Posix ((=~))
-- Sprawdź, czy ciąg znaków pasuje do wzorca
isMatch :: String -> String -> Bool
isMatch text pattern = text =~ pattern :: Bool
-- Znajdź pierwsze dopasowanie
findFirst :: String -> String -> String
findFirst text pattern = text =~ pattern :: String
main :: IO ()
main = do
print $ isMatch "hello world" "wo"
-- Wynik: True
print $ findFirst "dzień dobry, dobranoc" "dobry"
-- Wynik: "dobry"
Użycie regex-pcre
:
import Text.Regex.PCRE ((=~))
-- Znajdź wszystkie dopasowania
findAll :: String -> String -> [String]
findAll text pattern = text =~ pattern :: [String]
main :: IO ()
main = do
print $ findAll "test1 test2 test3" "\\btest[0-9]\\b"
-- Wynik: ["test1","test2","test3"]
Każda biblioteka ma swoje szczególności, ale ogólna metodologia użycia =~
do stosowania regex pozostaje spójna, czy to przy sprawdzaniu dopasowania, czy przy ekstrakcji podciągów. Wybór między regex-posix
a regex-pcre
w dużej mierze zależy od potrzeb twojego projektu i specyficznych możliwości regex, których wymagasz.