2 คะแนน โดย GN⁺ 2023-09-12 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • บทความนี้กล่าวถึงวิธีคำนวณความแตกต่างและจุดตัดของ 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 ความคิดเห็น

 
GN⁺ 2023-09-12
ความคิดเห็นบน Hacker News
  • บทความนี้กล่าวถึงเครื่องมือสำหรับคำนวณผลต่างและจุดตัดของ regular expressions (regexes) สองชุด
  • ผู้ใช้รายงานว่าเครื่องมืออาจค้างเมื่อพยายามจัดการ regexes ที่ซับซ้อน เช่น การกรองตัวเลขที่หารด้วย 3 ลงตัว
  • เครื่องมือนี้สามารถใช้สร้างลำดับชั้นของคลาสสตริงที่มีประโยชน์สำหรับการตรวจสอบสตริงบางประเภท เช่น ที่อยู่อีเมลหรือ URL
  • ผู้ใช้คนหนึ่งได้สร้างเว็บเดโมที่คล้ายกัน โดยแสดงกระบวนการพาร์ส regex ในหลายรูปแบบ และท้ายที่สุดส่งออกโค้ดในหลายภาษา
  • regular expressions ได้รับการยอมรับในความสามารถในการรวบรวมทฤษฎีคณิตศาสตร์ที่ซับซ้อนให้อยู่ในอินเทอร์เฟซเชิงปฏิบัติที่คล้ายกับพีชคณิตเชิงเส้น
  • ผู้ใช้บางคนประหลาดใจกับความซับซ้อนของ regex สำหรับยูเนียนและอินเตอร์เซกชันที่เครื่องมือสร้างขึ้น และเสนอว่าการสร้าง regular expression ที่เล็กที่สุดอาจเป็นความท้าทายที่ใหญ่กว่า
  • เครื่องมือนี้มีการแสดงผลแบบกราฟิกของ Deterministic Finite Automaton (DFA) สำหรับ regexes ที่กำหนด และผู้ใช้ประเมินว่าน่าประทับใจ
  • ผู้ใช้บางคนพบว่าเครื่องมือมีปัญหาในการจัดการ regexes สำหรับ URL และที่อยู่อีเมลที่ถูกต้องตามไวยากรณ์
  • มีข้อเสนอให้ปิดฟังก์ชันคำแนะนำอัตโนมัติในช่องกรอก regex เพื่อปรับปรุงการใช้งานบนอุปกรณ์พกพา
  • ผู้ใช้คนหนึ่งแบ่งปันประสบการณ์การใช้แนวคิดเรื่องจุดตัดของ regex เพื่อเขียนตรรกะตรวจสอบสำหรับการตั้งค่า "IP RegEx filter" ซึ่งช่วยป้องกันข้อร้องเรียนจากผู้ใช้ว่าฟิลเตอร์ไม่ทำงาน