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 \n
atau \r\n
.
saya perhatikan
Regex101 hanya cocok dengan linebreak
\n
( contoh - hapus\r
dan cocok)RegExr cocok dengan linebreak tidak pada
\n
maupun 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
\n
dan sekali saja\r\n
)?
\r?\n
untuk mencocokkan urutan terminasi \r\n
dan \n
garis. Ini tidak bekerja untuk \r
sintaks Mac lama , tetapi yang cukup langka hari ini.
[\r\n]+
- atau sesuatu seperti ini