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:)
สำคัญที่ต้องอ้างอิงเอกสารของไลบรารีบุคคลที่สามเพื่อความถูกต้องของไวยากรณ์และความพร้อมใช้งานของวิธีการ.