- บทความนี้กล่าวถึงวิธีคำนวณความแตกต่างและจุดตัดของ regular expressions (regexes) สองชุด
- ผู้เขียนแสดงกระบวนการโดยยกสมการและผลลัพธ์ เช่น α < β = false, α = β = true, α > β = false, α & β = α ^ β = ∅, α - β = ∅
- นอกจากนี้ บทความนี้ยังมีบทนำสั้น ๆ เกี่ยวกับไวยากรณ์ของ regular expression ดังต่อไปนี้:
- '.' ตรงกับอักขระเดี่ยวใด ๆ
- 'xy' คือการเชื่อมต่อ: ตรงกับ x แล้วตามด้วย y
- 'x|y' คือการสลับทางเลือก: ตรงกับ x หรือ y
- 'x*' คือ Kleene star: ตรงกับ x ตั้งแต่ 0 ครั้งขึ้นไป
- '(xyz)' คือการจัดกลุ่ม: ปฏิบัติต่อ xyz เป็นรายการเดียว
- '()' คือ regular expression ว่าง ซึ่งตรงกับสตริงว่าง
- 'x+' คือ Kleene plus: ตรงกับ x ตั้งแต่ 1 ครั้งขึ้นไป
- 'x?' คือแบบเลือกได้: อาจตรงกับ x หรือไม่ก็ได้
- 'x{n}' คือการยกกำลัง: เชื่อม x เข้ากับตัวเอง n ครั้ง
- 'x{m,n}' คือการทำซ้ำ: เชื่อม x เข้ากับตัวเองตั้งแต่ m ถึง n ครั้ง
- '[a-z0-9]' คือการจัดกลุ่ม: ตรงกับอักขระเดี่ยวใด ๆ ภายในกลุ่ม
- '[^a-z0-9]' คือการจัดกลุ่มแบบปฏิเสธ: ตรงกับอักขระเดี่ยวใด ๆ ที่ไม่อยู่ในกลุ่ม
- '\c' คือการ escape: ตรงกับอักขระพิเศษ c
- '\u001a' คือ Unicode escape: ตรงกับอักขระ UTF-16 นั้น
- 'a, b, c' คืออักขระอื่นทั้งหมดที่ตรงกับตัวมันเอง
- บทความนี้ยังกล่าวถึงฟีเจอร์ที่ไม่รองรับ เช่น anchors, zero-width assertions, backreferences, การดึง subgroup, การค้นหาหรือการจับคู่บางส่วน และแฟล็กอื่น ๆ ที่เปลี่ยนพฤติกรรม
- สำหรับรายละเอียดเพิ่มเติม ผู้เขียนระบุให้อ้างอิงหน้า GitHub ของ 'antimirov'
- ผู้เขียนบทความนี้คือ Eiríkr Åsheim ซึ่งเป็นที่รู้จักในชื่อ @d6 บน Twitter และ Mastodon
1 ความคิดเห็น
ความคิดเห็นบน Hacker News