Використання регулярних виразів

Haskell:
Використання регулярних виразів

Як:

У Haskell функціональності регулярних виразів не є частиною стандартної бібліотеки, що потребує використання сторонніх пакетів, таких як regex-base разом зі сумісним backend, наприклад regex-posix (для підтримки POSIX регулярних виразів), regex-pcre (для сумісності з регулярними виразами Perl) тощо. Ось як ви можете використовувати ці пакети для роботи з регулярними виразами.

Спочатку, переконайтеся, що у вас встановлені пакети, додавши regex-posix або regex-pcre до файлу .cabal вашого проекту або встановивши їх безпосередньо через cabal:

cabal install regex-posix

або

cabal install regex-pcre

Використання regex-posix:

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

-- Перевірка, чи рядок відповідає шаблону
isMatch :: String -> String -> Bool
isMatch text pattern = text =~ pattern :: Bool

-- Знаходження першого співпадіння
findFirst :: String -> String -> String
findFirst text pattern = text =~ pattern :: String

main :: IO ()
main = do
    print $ isMatch "hello world" "wo"
    -- Вивід: True
    print $ findFirst "good morning, good night" "good"
    -- Вивід: "good"

Використання regex-pcre:

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

-- Знаходження всіх співпадінь
findAll :: String -> String -> [String]
findAll text pattern = text =~ pattern :: [String]

main :: IO ()
main = do
    print $ findAll "test1 test2 test3" "\\btest[0-9]\\b"
    -- Вивід: ["test1","test2","test3"]

Кожна бібліотека має свої особливості, але загальна методологія використання =~ для застосування регулярного виразу залишається послідовною, незалежно від того, чи перевіряєте ви на співпадіння, чи витягуєте підрядки. Вибір між regex-posix або regex-pcre значною мірою залежить від потреб вашого проекту та специфічних можливостей регулярних виразів, які вам необхідні.