שימוש בביטויים רגולריים

Haskell:
שימוש בביטויים רגולריים

כיצד ל:

בHaskell, פונקציות regex אינן חלק מהספרייה הסטנדרטית, מה שמחייב שימוש בחבילות צד שלישי כמו regex-base יחד עם תוכנת backend מתאימה כמו 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 הספציפיות הנדרשות.