ในขณะที่เขียนคำตอบนี้ฉันต้องจับคู่เฉพาะกับการกระจายบรรทัดแทนการใช้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]+- หรืออะไรทำนองนี้