ค่าคงที่ Regex และการจับคู่
จับคู่รูปแบบด้วยชนิด Regex
ค่าคงที่ Regex และการจับคู่ เป็นบทเรียน Swift Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Swift Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Swift Academy มีบทเรียนทั้งหมด 4 บทเรียน
นิพจน์ทั่วไปใน Swift
Swift 5.7 ขึ้นไปมี นิพจน์ทั่วไปในตัวอยู่ในไลบรารีมาตรฐานและ Foundation คุณสามารถเขียนนิพจน์ทั่วไปเป็นลิเทอรัลระหว่างเครื่องหมายทับ เช่น /\d+/ และคอมไพเลอร์จะตรวจสอบให้ขณะสร้างโปรแกรม
ลิเทอรัลนิพจน์ทั่วไป
ลิเทอรัลนิพจน์ทั่วไปจะสร้างค่า Regex ชนิดของค่าจะระบุสิ่งที่การจับคู่ส่งกลับ รูปแบบที่ง่ายที่สุดจะจับคู่ลำดับอักขระที่กำหนดไว้ตายตัว
let pattern = /hello/
if "hello world".contains(pattern) {
print("Found hello")
}wholeMatch(of:)
wholeMatch(of:) จะสำเร็จต่อเมื่อสตริง ทั้งหมดตรงกับรูปแบบเท่านั้น โดยจะส่งกลับการจับคู่แบบมีค่าหรือ nil หากสตริงทั้งหมดไม่ตรงกับรูปแบบ
let digits = /\d+/
if let m = "12345".wholeMatch(of: digits) {
print("Whole match: \(m.output)")
} else {
print("No whole match")
}firstMatch(of:)
firstMatch(of:) จะค้นหาสตริงและส่งกลับ ตำแหน่งแรกที่รูปแบบตรงกันไม่ว่าจะอยู่ที่ใดภายในสตริง
let word = /\w+/
if let m = " swift rocks".firstMatch(of: word) {
print("First word: \(m.output)")
}การเข้าถึงช่วงของการจับคู่
การจับคู่จะแสดง range ในสตริงต้นฉบับ ทำให้ทราบได้อย่างแน่ชัดว่าเกิดขึ้นที่ใด
let text = "abc123def"
if let m = text.firstMatch(of: /\d+/) {
print("Matched: \(m.output)")
print("At: \(text[m.range])")
}คลาสอักขระ
ภายในรูปแบบ \d จะจับคู่ตัวเลข \w จะจับคู่อักขระคำ และ \s จะจับคู่ช่องว่าง วงเล็บเหลี่ยมใช้กำหนดชุดอักขระแบบกำหนดเอง เช่น [aeiou]
let vowel = /[aeiou]/
if let m = "sky".firstMatch(of: vowel) {
print("Vowel: \(m.output)")
} else {
print("No vowels found")
}ตัวระบุจำนวนการทำซ้ำ
ตัวระบุจำนวนการทำซ้ำควบคุมการทำซ้ำ: * หมายถึงศูนย์ครั้งขึ้นไป + หมายถึงหนึ่งครั้งขึ้นไป ? หมายถึงเลือกมีหรือไม่มีก็ได้ และ {n,m} หมายถึงจำนวนที่อยู่ภายในขอบเขต
let phone = /\d{3}-\d{4}/
print("555-1234".wholeMatch(of: phone) != nil)
print("12-34".wholeMatch(of: phone) != nil)จุดยึด
ใช้ ^ เพื่อยึดที่จุดเริ่มต้น และใช้ $ ที่จุดสิ้นสุดของบรรทัด จุดยึดไม่ใช้พื้นที่ของอักขระ แต่เป็นการยืนยันตำแหน่ง
let startsWithCap = /^[A-Z]\w*/
if let m = "Swift".firstMatch(of: startsWithCap) {
print("Matched: \(m.output)")
}การจับคู่โดยไม่คำนึงถึงตัวพิมพ์
คุณสามารถไม่สนใจตัวพิมพ์ได้โดยต่อท้ายค่า regex ด้วย .ignoresCase() ซึ่งมีประโยชน์เมื่อไม่สามารถคาดเดารูปแบบตัวพิมพ์ของข้อมูลเข้าได้
let pattern = /swift/.ignoresCase()
print("I love SWIFT".contains(pattern))การจับคู่ด้วย matches(of:)
matches(of:) ส่งกลับคอลเลกชันของการจับคู่ที่ไม่ซ้อนทับกันทุกแห่งในสตริง ทำให้คุณวนซ้ำผ่านการจับคู่ทั้งหมดได้
let nums = "a1 b22 c333"
for m in nums.matches(of: /\d+/) {
print(m.output)
}การตรวจสอบข้อมูลเข้า
การใช้งานทั่วไปอย่างหนึ่งคือการตรวจสอบความถูกต้อง: สร้างรูปแบบสำหรับรูปแบบทั้งหมดที่คาดหวัง แล้วตรวจสอบด้วย wholeMatch ซึ่งจะส่งกลับ nil เมื่อไม่ตรงกัน
func isZip(_ s: String) -> Bool {
s.wholeMatch(of: /\d{5}/) != nil
}
print(isZip("90210"))
print(isZip("ABCDE"))ตรวจสอบอย่างรวดเร็ว
เมธอดใดจะสำเร็จต่อเมื่อสตริงทั้งหมดตรงกับรูปแบบ?
สรุป
คุณได้เรียนรู้การเขียน ลิเทอรัลนิพจน์ทั่วไปด้วยเครื่องหมายทับ และการจับคู่โดยใช้ wholeMatch(of:), firstMatch(of:) และ matches(of:) นอกจากนี้ยังได้เรียนรู้คลาสอักขระ ตัวระบุจำนวนการทำซ้ำ จุดยึด และการจับคู่โดยไม่คำนึงถึงตัวพิมพ์ ถัดไป คุณจะดึงข้อมูลออกจากการจับคู่ด้วยกลุ่มจับค่า
คำถามที่พบบ่อย
บทเรียน “ค่าคงที่ Regex และการจับคู่” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ค่าคงที่ Regex และการจับคู่” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Swift Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Swift Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ค่าคงที่ Regex และการจับคู่”
จับคู่รูปแบบด้วยชนิด Regex คุณปฏิบัติ Swift Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Swift Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Swift Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “ค่าคงที่ Regex และการจับคู่” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Swift Academy นี้ได้ไหม
ได้ บทเรียน Swift Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ค่าคงที่ Regex และการจับคู่
- กลุ่มการจับคู่
- DSL สำหรับ RegexBuilder
- การแทนที่และแบ่งข้อความ