Bài học theo mô-đun (3/4)
Cờ `m`: nhiều dòng
Với cờ m (nhiều dòng), các neo ^ và $ thay đổi ý nghĩa:
chúng không còn là phần bắt đầu/kết thúc của toàn bộ chuỗi nữa mà là phần bắt đầu/kết thúc của
mỗi dòng. Một dòng được phân cách bởi \n (hoặc bởi điểm bắt đầu/kết thúc của
chuỗi).
Pattern: ^Errore
Flag: gm
Sample: Errore: A\nInfo: B\nErrore: C
^^^^^^ ^^^^^^Nếu không có m nó sẽ chỉ khớp với Errore ở điểm bắt đầu tuyệt đối của
mẫu (1 trận). Với m, nó khớp với phần đầu của mỗi dòng (2
trận đấu).
m KHÔNG thay đổi dấu chấm
Một sự nhầm lẫn phổ biến: cờ m KHÔNG thay đổi ý nghĩa của dấu chấm
.. Dấu chấm vẫn KHÔNG khớp với \n ngay cả với m. Để làm dấu chấm
khớp mọi thứ bạn cần với cờ s (được đề cập trong mô-đun 1).
m và s trực giao: bạn có thể sử dụng chúng cùng nhau (ms), riêng biệt,
hoặc không.
Cờ nhiều dòng và xử lý từng dòng
Cờ m sửa đổi hành vi của ^ và $ bằng cách làm cho chúng khớp với phần đầu và phần cuối của mỗi dòng (được phân cách bằng \\n) trong khối văn bản nhiều dòng, thay vì chỉ nhìn vào phần đầu và phần cuối tuyệt đối của toàn bộ chuỗi.
Hãy thử nó
Tìm mọi dòng bắt đầu bằng `ERROR`. Mỗi dòng được phân tách bằng \\n; sử dụng cờ `g` và `m`.
Hiển thị gợi ý
Cờ m làm cho ^ cũng khớp với phần đầu của các dòng bên trong, không chỉ ký tự đầu tiên tuyệt đối.
Giải pháp khả dụng sau 3 lần thử
Xem lại bài tập
Tìm mọi dòng KẾT THÚC bằng một dấu chấm. Sử dụng neo `$` với cờ `m` và `g`.
Hiển thị gợi ý
\\.$ với cờ gm khớp với dấu chấm ở cuối mỗi dòng, không chỉ ở cuối mẫu.
Giải pháp khả dụng sau 3 lần thử
Thử thách bổ sung
Find all lines in a multiline log that start exactly with the string `ID:` followed by a digit.
Hiển thị gợi ý
Sử dụng ^ trước ID: và đảm bảo cờ m đang hoạt động.
Giải pháp khả dụng sau 3 lần thử