จุดต้องถูกหลีกเลี่ยงในคลาสอักขระ (วงเล็บเหลี่ยม) ของนิพจน์ทั่วไปหรือไม่?


97

จุด.ในนิพจน์ทั่วไปจะจับคู่อักขระเดี่ยว ๆ เพื่อให้ regex จับคู่จุดจุดจะต้องมีการหลีกเลี่ยง:\.

มีการชี้ให้ฉันเห็นว่าภายในวงเล็บเหลี่ยม[]ไม่จำเป็นต้องหลบหนี ตัวอย่างเช่นนิพจน์: [.]{3}จะจับคู่...สตริง

มันไม่จริงเหรอ? และถ้าเป็นเช่นนั้นจริงสำหรับมาตรฐาน regex ทั้งหมดหรือไม่?


ใช่นั่นเป็นความจริงที่ DOT (และอักขระพิเศษอื่น ๆ ส่วนใหญ่) ไม่จำเป็นต้องใช้ Escape ในคลาสอักขระ
anubhava

3
ไม่มี "มาตรฐาน" สำหรับไวยากรณ์นิพจน์ทั่วไป
BoltClock

3
@BoltClock มีบางส่วน: posix, posix ขยาย, perl ดูen.wikipedia.org/wiki/Regular_expression#Standards
Dariusz

1
@Dariusz คุณเป็นคนที่โหวตให้ฉันเพราะคุณคิดว่าฉันผิด? ถ้าเป็นเช่นนั้นฉันต้องการ 2 คะแนนของฉันคืน :)
Paul Samsotha

@peeskillet ใช่ฉันได้รับการแก้ไขแล้ว ขอบคุณและขอโทษ
Dariusz

คำตอบ:


136

ในชั้นเรียนตัวอักษร (วงเล็บ) ตัวอักษรใด ๆ ยกเว้น^, -, ]หรือ\เป็นตัวอักษร

เว็บไซต์นี้เป็นข้อมูลอ้างอิงที่ยอดเยี่ยมและมีข้อมูลมากมายเกี่ยวกับความแตกต่างของรสชาติ regex ที่แตกต่างกัน http://www.regular-expressions.info/refcharclass.html


3
มันขึ้นอยู่กับว่าภาษานั้นจัดการกับมันอย่างไร แต่สำหรับภาษาส่วนใหญ่นี่เป็นเรื่องจริง
Patrick Oscity

40
-ยังเป็นตัวอักษรหากเป็นค่าสุดท้าย
Pedro Lobito

16
และ ^ เป็นตัวอักษรถ้าไม่ใช่อักขระตัวแรก
Nigel B. Peck

1
หาก $ ดูเหมือนตัวแปรก็ต้องมีการ Escape ด้วย เช่น: [$.]
W3Coder

1
@PedroLobito และถ้าเป็นอย่างแรกฉันคิดว่า
Tim Malone
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.