งานของคุณคือการสร้างโปรแกรมที่กำหนดว่าสตริงที่กำหนดเป็นนิพจน์ปกติที่ถูกต้องหรือไม่หรือใช้โค้ดที่มาจากไซต์ในเครือข่าย StackExchange
สำหรับวัตถุประสงค์ของการท้าทายนี้, ()*?|\
ภาษาแสดงออกปกติจะปล้นลงและน้อยที่สุดส่วนใหญ่เป็นชุดของตัวละครเมตา: ดังนั้นคุณจะไม่สามารถใช้ตัวแยกวิเคราะห์ regex ในตัวได้
\
ใช้เพื่อหลบหนีเมตาอักขระ มันจะต้องตามด้วยตัวอักษรเมตา- วงเล็บที่ไม่ใช้ค่า Escape จะต้องมีความสมดุล
*
และ?
ต้องนำหน้าด้วยอักขระที่ไม่ใช่เมตาอักขระกลุ่มวงเล็บหรือเมตาอักขระที่ใช้ Escape- อักขระ ASCII ที่พิมพ์ได้อื่น ๆ ทั้งหมดรวมถึงการขึ้นบรรทัดใหม่แท็บและพื้นที่ต้องเป็นอักขระที่ไม่ใช่เมตา เกิดอะไรขึ้นกับสตริงที่มีอักขระอื่น ๆ ไม่ได้ถูกกำหนดไว้
- ความหมายที่แท้จริงของ regex ไม่สำคัญสำหรับความท้าทายนี้
ตัวอย่าง
Truthy:
abc
a?
(a|)*
()
a|b*
\*
\\
\\*
a*b?(cd|e)
+
[
}
(123\))*
\|
(a(b(c|d)*e)*f)*
(|\)*)
(abc)+*
(abc)+
+abc
^ last test case is an actual newline
Falsy:
?abc
*
**
\
(
a*?
a?*
?
a)
(\)
(|\)*
\()
|*
(?:abc)
\\**
\n
เกณฑ์การให้คะแนน
คะแนนโดยรวมของคุณคือจำนวนตัวอย่างที่นำมาจากคำถามและคำตอบรอบ ๆ StackExchange
- ข้อมูลโค้ดซ้ำ ๆ จะถูกนับเป็นจำนวนเท่าที่มีการใช้งาน
- ช่องว่างสามารถเพิ่มและลบได้อย่างอิสระ (เนื่องจาก Python, Haskell และภาษาที่ไวต่อช่องว่างอื่น ๆ ) และจะไม่นับรวมนับรวมข้อมูลของคุณ
- ตัวอย่างได้รับอนุญาตจากไซต์ StackExchange ใด ๆ ตราบเท่าที่พวกเขามาจากคำถามคำตอบและความคิดเห็นที่เก่ากว่า (รวมถึงการแก้ไขเวลา - ใช้การแก้ไขที่เก่ากว่าถ้าจำเป็น) กว่าความท้าทายนี้ (24 ก.ย. 2019 @ 3:30 PM UTC)
- ตัวอย่างข้อมูลสามารถมาจากที่ใดก็ได้ในคำถามคำตอบหรือเนื้อหาความคิดเห็นไม่ว่าจะอยู่ในบล็อกโค้ดที่ฟอร์แมตหรือไม่ก็ตาม
- การตัดตัวอย่างข้อมูลลงในกึ่งกลางอีกสาเหตุทำให้ข้อมูลโค้ดด้านนอกนับเป็นตัวอย่างข้อมูลสองรายการ
คะแนนต่ำสุดชนะ!