Saat menulis jawaban ini , saya harus mencocokkan secara eksklusif pada linebreak alih-alih menggunakan s-flag ( dotall- dot match linebreaks).
Situs yang biasanya digunakan untuk menguji ekspresi reguler berperilaku berbeda ketika mencoba mencocokkan \natau \r\n.
saya perhatikan
Regex101 hanya cocok dengan linebreak
\n
( contoh - hapus\rdan cocok)RegExr cocok dengan linebreak tidak pada
\nmaupun pada\r\n
dan saya tidak dapat menemukan sesuatu untuk membuatnya cocok dengan linebreak, kecuali untukm-flag dan\s
( contoh )Debuggex berperilaku lebih berbeda:
dalam contoh ini hanya cocok menyala\r\n, sementara di
sini hanya cocok\n, dengan bendera dan mesin yang sama ditentukan
Saya sepenuhnya menyadari m-flag (multiline - ^cocok dengan awal dan $akhir baris), tetapi kadang-kadang ini bukan pilihan. Sama dengan \s, karena cocok dengan tab dan spasi, juga.
Pemikiran saya untuk menggunakan karakter baris baru unicode ( \u0085) tidak berhasil, jadi:
- Apakah ada cara yang gagal untuk mengintegrasikan pertandingan pada linebreak (lebih disukai terlepas dari bahasa yang digunakan) ke dalam ekspresi reguler?
- Mengapa situs yang disebutkan di atas berperilaku berbeda (terutama Debuggex, hanya cocok sekali
\ndan sekali saja\r\n)?
\r?\nuntuk mencocokkan urutan terminasi \r\ndan \ngaris. Ini tidak bekerja untuk \rsintaks Mac lama , tetapi yang cukup langka hari ini.
[\r\n]+- atau sesuatu seperti ini