Haskell:
การใช้ regular expressions

วิธีการ:

ใน Haskell, ฟังก์ชันการทำงานของ regex ไม่ได้เป็นส่วนหนึ่งของไลบรารีมาตรฐาน ซึ่งจำเป็นต้องใช้แพ็กเกจของบุคคลที่สาม เช่น regex-base ร่วมกับแบ็กเอ็นด์ที่เข้ากันได้ เช่น regex-posix (สำหรับการสนับสนุน regex POSIX), regex-pcre (สำหรับ regex ที่เข้ากันได้กับ 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 ยังคงเหมือนกัน ไม่ว่าคุณจะตรวจสอบการตรงกันหรือสกัดสตริงย่อย การเลือกใช้ระหว่าง regex-posix หรือ regex-pcre ขึ้นอยู่กับความต้องการของโปรเจกต์ของคุณและความสามารถเฉพาะด้าน regex ที่ต้องการ