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

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

วิธีการ:

การสนับสนุนเนทีฟของ Swift สำหรับ regex ใช้คลาส NSRegularExpression ควบคู่ไปกับเมท็อด range และ replacement ของคลาส String ด้านล่างเป็นตัวอย่างของการใช้ regex ในการค้นหาและเน้นที่อยู่ email ภายในบล็อกข้อความ:

import Foundation

let text = "ติดต่อเราที่ [email protected] หรือ [email protected] เพื่อขอข้อมูลเพิ่มเติม."
let regexPattern = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}"

do {
    let regex = try NSRegularExpression(pattern: regexPattern)
    let matches = regex.matches(in: text, range: NSRange(text.startIndex..., in: text))

    if !matches.isEmpty {
        for match in matches {
            let range = Range(match.range, in: text)!
            print("พบ: \(text[range])")
        }
    } else {
        print("ไม่พบการจับคู่.")
    }
} catch {
    print("ข้อผิดพลาด Regex: \(error.localizedDescription)")
}

// ตัวอย่างผลลัพธ์:
// พบ: [email protected]
// พบ: [email protected]

สำหรับสถานการณ์ที่ซับซ้อนหรือมุ่งเน้นความสะดวกมากขึ้น คุณสามารถใช้ไลบรารีของบุคคลที่สาม เช่น SwiftRegex ซึ่งทำให้ไวยากรณ์เรียบง่ายและขยายความเป็นไปได้ แม้ว่าไลบรารีมาตรฐานของ Swift จะทรงพลัง แต่บางนักพัฒนาก็ชอบไลบรารีเหล่านี้เพราะไวยากรณ์ที่กระชับและคุณสมบัติเพิ่มเติม นี่คือวิธีที่คุณอาจดำเนินการงานที่คล้ายคลึงกันโดยใช้ไลบรารีบุคคลที่สามที่สมมุติขึ้น:

// สมมติว่ามีไลบรารีชื่อ SwiftRegex และมีการนำเข้าที่ใช้
let text = "ติดต่อได้ที่ [email protected] หรือเยี่ยมชมเว็บไซต์ของเรา."
let emailPattern = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}"

let emails = text.matches(for: emailPattern) // วิธีการสมมติที่ SwiftRegex มีให้
if emails.isEmpty {
    print("ไม่พบที่อยู่อีเมล.")
} else {
    emails.forEach { email in
        print("พบ: \(email)")
    }
}

// ผลลัพธ์สมมติสมมติว่าวิธีการ `matches(for:)` มีอยู่ใน SwiftRegex:
// พบ: [email protected]

ตัวอย่างนี้แสดงการใช้แพ็กเกจ regular expression ของบุคคลที่สามเพื่อเรียบง่ายการค้นหาการจับคู่ภายในสตริง โดยสันนิษฐานว่ามีวิธีการสะดวกเช่น matches(for:) สำคัญที่ต้องอ้างอิงเอกสารของไลบรารีบุคคลที่สามเพื่อความถูกต้องของไวยากรณ์และความพร้อมใช้งานของวิธีการ.