คำถามติดแท็ก regular-expressions

ตามวิกิพีเดียนิพจน์ทั่วไป (regex แบบย่อหรือ regexp) คือลำดับของอักขระที่สร้างรูปแบบการค้นหาโดยส่วนใหญ่ใช้ในการจับคู่รูปแบบกับสตริงหรือการจับคู่สตริงเช่นการดำเนินการ "ค้นหาและแทนที่"

7
การย่อมาตรฐานสำหรับ "นิพจน์ทั่วไป", "regex" หรือ "regexp" คืออะไร [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน8 ปีที่ผ่านมา ฉันต้องการที่จะรู้ว่าอะไรคือวิธีที่เป็นมาตรฐานมากขึ้นในการเรียกการแสดงออกปกติในทางสั้น ๆ ฉันได้เห็นทั้ง regex และ regexp Google กล่าวว่า regex มีความนิยมมากถึงเกือบ 2 เท่าที่ regexp แต่ขึ้นอยู่กับวิธีที่ฉันค้นหา (เมื่อฉันเพิ่ม "การแสดงออกปกติ" หลังจากคำว่า "regex" กลายเป็น "การแสดงออกปกติ regex" ผลลัพธ์จะแตกต่างกัน) และบน stackexchange จะมีแท็ก regex :) อะไรคือวิธีที่เหมาะสมกว่าในการย่อให้สั้นลง บางทีมันไม่สำคัญ :) แต่ขอบคุณสำหรับคำตอบ

5
การวางเครื่องหมายข้อความไว้ในรูปแบบของสตริงที่ไม่ดีหรือไม่? มีทางเลือกอื่นหรือไม่?
ฉันทำงานกับสตริงจำนวนมากซึ่งต้องการการจัดการอย่างมาก ตัวอย่างเช่นฉันอาจสร้างสตริงเช่นนี้ ส่วนที่ 1 เรือ ส่วนการ เขียนโปรแกรมA ส่วนที่ 2 การแบ่งพาร์ติชั่นสำหรับการเขียนโปรแกรม ส่วน AA มาตรารายการ SQL สตริงจะใหญ่เกินไปที่จะตรวจสอบด้วยตนเองทุกส่วน ตอนนี้ฉันต้องsplitนี้stringเป็นstringlistโดยส่วนและชิ้นส่วน ฉันนึกถึงตัวเลือกสองทาง: นิพจน์ปกติ: QStringList sl = s.split(QRegularExpression("\n(?=Part [0-9]+|Section [A-Z]+)")); ดูเหมือนว่าจะใช้งานได้ แต่บางครั้งมีข้อยกเว้นเกิดขึ้น (IE: Section SQL Entriesอาจแยกได้) มิฉะนั้นสิ่งที่ฉันสามารถทำได้คือวางเครื่องหมายเมื่อฉันสร้างสตริงเริ่มต้น: art ส่วนที่ 1 เรือ ection ส่วน โปรแกรมA art ส่วนที่2 การแบ่งพาร์ติชันสำหรับการเขียนโปรแกรม ection ส่วนมาตราAA ของมาตรา SQL ซึ่งหมายความว่าการแยกสตริงจะกลายเป็นเรื่องง่าย: QStringList sl = s.split("🚤💻")); …

4
ปกป้องอินพุตผู้ใช้ของนิพจน์ทั่วไปจากการถูกโจมตี
ฉันรับรู้ถึงการปฏิเสธการแสดงผลปกติ (ReDoS) มีวิธีที่สมเหตุสมผลหรือไม่ที่จะอนุญาตให้ผู้ใช้สร้าง regexes ที่กำหนดเองในขณะที่รับประกันได้ว่าพวกเขาไม่ได้ส่งรูปแบบที่ช้าแบบเอ็กซ์โปเนนเชียล?

5
การวิเคราะห์คำศัพท์ที่ไม่มีการแสดงออกปกติ
ฉันดู lexers สองสามตัวในระดับสูงกว่าต่างๆ ( Python , PHP , Javascriptและอื่น ๆ ) และพวกเขาทั้งหมดดูเหมือนจะใช้นิพจน์ปกติในรูปแบบเดียวหรืออีกรูปแบบหนึ่ง ในขณะที่ฉันแน่ใจว่า regex อาจเป็นวิธีที่ดีที่สุดในการทำสิ่งนี้ฉันสงสัยว่ามีวิธีใดบ้างที่จะได้รับการเลเยอร์พื้นฐานโดยไม่มีการแสดงออกปกติหรืออาจเป็นการแยกวิเคราะห์สตริงโดยตรง ใช่แล้วเป็นไปได้ไหมที่จะใช้การเรียงลำดับขั้นพื้นฐานบางอย่างในภาษาระดับสูง * โดยไม่ใช้นิพจน์ทั่วไปในรูปแบบใด ๆ * ภาษาระดับที่สูงขึ้นเป็นสิ่งต่าง ๆ เช่น Perl / PHP / Python / Javascript เป็นต้นฉันแน่ใจว่ามีวิธีที่จะทำได้ใน C
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.