ในขณะที่เขียนคำตอบนี้ฉันต้องจับคู่เฉพาะกับการกระจายบรรทัดแทนการใช้s
-flag ( dotall
- จุดจับคู่การกระจายบรรทัด)
เว็บไซต์ที่มักจะใช้ในการทดสอบการแสดงออกปกติทำงานแตกต่างกันเมื่อพยายามที่จะจับคู่หรือ\n
\r\n
ฉันสังเกตเห็น
Regex101 จับคู่ linebreaks เฉพาะใน
\n
( ตัวอย่าง - ลบ\r
และตรงกับ)RegExr จับคู่ linebreaks ไม่ว่าบน
\n
หรือบน\r\n
และฉันไม่พบสิ่งที่จะทำให้ตรงกับ linebreak ยกเว้นm
-flag และ\s
( ตัวอย่าง )Debuggex มีพฤติกรรมที่แตกต่างกันมากขึ้น:
ในตัวอย่างนี้ตรงกับเฉพาะใน\r\n
ขณะ
ที่ตรงนี้เท่านั้นที่ตรง\n
กับด้วยธงและเครื่องยนต์เดียวกันที่ระบุ
ฉันตระหนักถึงm
-flag (หลายบรรทัด- ทำให้^
ตรงกับจุดเริ่มต้นและ$
จุดสิ้นสุดของบรรทัด) แต่บางครั้งนี่ไม่ใช่ตัวเลือก เช่นเดียวกับ\s
ตรงกับแท็บและช่องว่างเช่นกัน
ความคิดของฉันในการใช้อักขระขึ้นบรรทัดใหม่ของ Unicode ( \u0085
) ไม่ประสบความสำเร็จดังนั้น:
- มีวิธีที่ไม่ปลอดภัยหรือไม่ที่จะรวมการแข่งขันใน linebreak (โดยเฉพาะอย่างยิ่งโดยไม่คำนึงถึงภาษาที่ใช้) ในการแสดงออกปกติ?
- เหตุใดเว็บไซต์ที่กล่าวถึงข้างต้นจึงมีพฤติกรรมแตกต่างกัน (โดยเฉพาะ Debuggex การจับคู่ครั้งเดียว
\n
และครั้งเดียวเท่านั้น\r\n
)
\r?\n
เพื่อจับคู่ทั้งสอง\r\n
และ\n
ลำดับการยกเลิกบรรทัด มันใช้ไม่ได้กับ\r
ไวยากรณ์ Mac เก่าแต่อันนี้หายากทีเดียวในทุกวันนี้
[\r\n]+
- หรืออะไรทำนองนี้