เหตุใดจึงไม่ใช้โหมดเสริม regex เป็นค่าเริ่มต้น


10

ฉันกำลังใช้ sed ฉันใช้ regex ที่ถูกต้องเท่าที่ฉันจะเห็น แต่ sed ไม่ได้ทำอะไร ปรากฎว่าฉันใช้\s+ซึ่ง sed ไม่สามารถเข้าใจและเมื่อฉันเปลี่ยนไป[ ]+ใช้งานได้

ดังนั้นเพื่อสรุปฉันสร้าง regex เพื่อให้ทำงานฉันต้องหลบหนีเกือบทุกอย่างและลบ\sช่องว่างออก ดูเหมือนว่ามีโหมดที่จะหลีกเลี่ยงสิ่งเหล่านี้ทั้งหมดซึ่งเป็น-rดังนั้นฉันต้องการถาม:

  1. เหตุใดจึงไม่-rเป็นโหมดเริ่มต้นสำหรับ sed ทำไมฉันต้องไปเจอปัญหามากมายเพื่อหลบหนีทุกอย่าง?
  2. manบอกว่ามีตัวเลือก--posixและ "POSIX.2 BREs ควรได้รับการสนับสนุน" สิ่งนี้อ้างถึงอะไร โหมด NFA / DFA

เพื่อหลีกเลี่ยงการจับคู่ช่องว่างเช่นการ\s+ใช้Perl [[:space:]][:space:]]*ใน BRE และเหมือนกันหรือ[[:space:]]+ใน ERE
jrm

คำตอบ:


10

Re 1) คำตอบนั้นเหมือนกับเครื่องมืออื่น ๆ ที่ได้รับการปรับปรุงมานานหลายทศวรรษ :)

คุณไม่ต้องการทำลายสคริปต์ที่มีอยู่โดยเปลี่ยนพฤติกรรมเริ่มต้น

Re 2) ไม่มีส่วนเกี่ยวข้องกับเอ็นจิ้นการจับคู่ เป็นเพียงคำถามที่สนับสนุนชุดนิพจน์ทั่วไป POSIX BRE หมายถึง "การแสดงออกปกติพื้นฐาน"


แล้วจุด (2) ล่ะ?
จิม

การแก้ไขช่วยได้หรือไม่
ทิงค์

1

เกี่ยวกับจุดที่ 2: gnu sedใช้ GNU BREโดยค่าเริ่มต้น ในการใช้ POSIX BREคุณควรระบุ--posix

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