การใช้เรกุลาร์เอ็กเพรสชัน

Elm:
การใช้เรกุลาร์เอ็กเพรสชัน

วิธีการ:

Elm ไม่มีฟังก์ชัน regex ในตัวในไลบรารีหลักของมัน, ต้องการการใช้งานไลบรารีของบุคคลที่สามสำหรับการดำเนินการเหล่านี้ หนึ่งในตัวเลือกยอดนิยมสำหรับการทำงานกับ regex คือ elm/regex คุณสามารถเพิ่มมันไปยังโปรเจกต์ของคุณโดยใช้ elm install elm/regex

นี่คือวิธีที่คุณสามารถใช้ elm/regex สำหรับงานบางอย่างที่พบบ่อย:

1. การจับคู่รูปแบบ

เพื่อตรวจสอบว่าสตริงตรงกับรูปแบบหรือไม่, คุณสามารถใช้ Regex.contains

import Regex

pattern : Regex.Regex
pattern = Regex.fromString "^[a-zA-Z0-9]+$" |> Maybe.withDefault Regex.never

isAlphanumeric : String -> Bool
isAlphanumeric input = Regex.contains pattern input

-- ตัวอย่างการใช้งาน:
isAlphanumeric "Elm2023"     -- ผลการทำงาน: True
isAlphanumeric "Elm 2023!"   -- ผลการทำงาน: False

2. การหาครั้งทั้งหมด

เพื่อหาครั้งทั้งหมดของรูปแบบภายในสตริง, คุณสามารถใช้ Regex.find.

matches : Regex.Regex
matches = Regex.fromString "\\b\\w+\\b" |> Maybe.withDefault Regex.never

getWords : String -> List String
getWords input = 
    input
        |> Regex.find matches
        |> List.map (.match)

-- ตัวอย่างการใช้งาน:
getWords "Elm is fun!"  -- ผลการทำงาน: ["Elm", "is", "fun"]

3. การแทนที่ข้อความ

เพื่อแทนท่วงส่วนของสตริงที่ตรงกับรูปแบบ, คุณใช้ Regex.replace.

replacePattern : Regex.Regex
replacePattern = Regex.fromString "Elm" |> Maybe.withDefault Regex.never

replaceElmWithHaskell : String -> String
replaceElmWithHaskell input = 
    Regex.replace replacePattern (\_ -> "Haskell") input

-- ตัวอย่างการใช้งาน:
replaceElmWithHaskell "Learning Elm is fun!"  
-- ผลการทำงาน: "Learning Haskell is fun!"

ในตัวอย่างเหล่านี้, Regex.fromString ถูกใช้เพื่อคอมไพล์รูปแบบ regex, ที่ \b จับขอบเขตคำ, และ \w จับตัวอักษรภายในคำ ควรจัดการกับผลลัพธ์ Maybe จาก Regex.fromString เพื่อป้องกันรูปแบบ regex ที่ไม่ถูกต้อง, โดยทั่วไปใช้ Maybe.withDefault.