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 ที่ต้องการ