Trong khi viết câu trả lời này , tôi phải kết hợp độc quyền trên các ngắt dòng thay vì sử dụng s
-flag ( dotall
- dấu chấm khớp với ngắt dòng).
Các trang web thường được sử dụng để kiểm tra các biểu thức chính quy hoạt động khác nhau khi cố gắng khớp trên \n
hoặc \r\n
.
Tôi nhận thấy
Regex101 chỉ khớp với các ngắt dòng
\n
( ví dụ - xóa\r
và nó khớp)RegExr phù hợp với các ngắt dòng không bật
\n
hoặc không bật\r\n
và tôi không thể tìm thấy thứ gì đó để khớp với ngắt dòng, ngoại trừm
-flag và\s
( ví dụ )Debuggex hành xử thậm chí còn khác hơn:
trong ví dụ này, nó chỉ khớp với\r\n
, trong khi
ở đây, nó chỉ khớp với\n
, với cùng các cờ và công cụ được chỉ định
Tôi hoàn toàn biết về m
-flag (multiline - ^
khớp với điểm đầu và $
điểm cuối của dòng), nhưng đôi khi đây không phải là một lựa chọn. Tương tự \s
, vì nó phù hợp với các tab và không gian, quá.
Tôi nghĩ rằng việc sử dụng ký tự dòng mới unicode ( \u0085
) không thành công, vì vậy:
- Có cách nào không an toàn để tích hợp trận đấu trên một ngắt dòng (tốt nhất là bất kể ngôn ngữ được sử dụng) vào một biểu thức thông thường không?
- Tại sao các trang web được đề cập ở trên hoạt động khác nhau (đặc biệt là Debuggex, chỉ khớp một lần duy nhất
\n
và một lần duy nhất\r\n
)?
\r?\n
để phù hợp với cả hai \r\n
và \n
trình tự kết thúc dòng. Nó không hoạt động với \r
cú pháp Mac cũ , nhưng cái đó ngày nay khá hiếm.
[\r\n]+
- hoặc một cái gì đó như thế này