Trên cuốn sách Mã thông báo JavaScriptchapter 9: Regular Expressions trong phần "Phân tích tệp INI" có ví dụ bao gồm cụm từ thông dụng, tôi không hiểu gì cả. Tác giả đang cố gắng để phân tích nội dung tiếp theo:Sự khác biệt giữa hai biểu thức chính quy này là gì? (Hiểu? Trình định lượng)
searchengine=http://www.google.com/search?q=$1
spitefulness=9.7
; comments are preceded by a semicolon...
; each section concerns an individual enemy
[larry]
fullname=Larry Doe
type=kindergarten bully
website=http://www.geocities.com/CapeCanaveral/11451
[gargamel]
fullname=Gargamel
type=evil sorcerer
outputdir=/home/marijn/enemies/gargamel
Trên quy tắc cho nhà nước định dạng này mà
dòng trống và dòng bắt đầu bằng dấu chấm phẩy được bỏ qua.
Mã phân tích nội dung này đi qua mọi dòng trong tệp. Để xử lý các ý kiến, ông bao gồm biểu hiện này
^\s*(;.*)?
Theo như tôi hiểu, quá trình biểu hiện này dòng có thể bắt đầu với một chuỗi các
ký tự khoảng trắng, trong đó có không gian, tab, hình thức thức ăn chăn nuôi, thức ăn đường và gian Unicode khác
(source) cho đến khi nó xuất hiện một dấu chấm phẩy ; và sau đó một chuỗi "bất kỳ ký tự đơn nào ngoại trừ các ký tự dòng: \ n, \ r, \ u2028 hoặc \ u2029.". Tất cả điều này chỉ giới hạn ở {0,1} lần xuất hiện.
Tôi không nhận được điểm định lượng ? tại đây. Tôi không thể tìm thấy (regex101) mọi trường hợp không giới hạn sự xuất hiện của chuỗi trùng khớp có thể là một vấn đề. Tại sao biểu thức khác với biểu thức này:
^\s*(;.*)
Xin cảm ơn trước.
Văn bản trên trang được liên kết cho biết đầu vào được chia thành các dòng, vì vậy chế độ nhiều dòng không được sử dụng và không có dòng mới cho '\ s *' để khớp. (Điều đó cũng thu hút sự chú ý của tôi.) –
Tốt, tôi đã sửa đổi câu trả lời thành * (nếu công cụ sửa đổi MULTILINE BẬT và đầu vào là một văn bản có chứa nhiều dòng) *. Đó là một lưu ý chung cho độc giả trong tương lai. –
Cảm ơn. Tôi nhớ, biểu hiện cũng phải phù hợp với những dòng trống. Cảm ơn bạn đã trả lời quá nhanh. –