2011-10-28 43 views

Trả lời

11

Nói chung nó không có nghĩa gì cả và thậm chí có thể dẫn đến lỗi (nếu dấu chấm hỏi không theo một ký tự hợp lệ). Nhưng có một số ký tự mà nó có tác dụng, cụ thể là nếu nhân vật này cũng được sử dụng như modifier.

regular-expressions.info nói về cú pháp đặc biệt này:

hương vị regex hiện đại cho phép bạn áp dụng từ bổ nghĩa để chỉ một phần của biểu thức chính quy. Nếu bạn chèn công cụ sửa đổi (?ism) ở giữa regex, công cụ sửa đổi chỉ áp dụng cho phần của regex ở bên phải của công cụ sửa đổi. Bạn có thể tắt các chế độ bằng cách đặt trước chúng bằng dấu trừ. Tất cả các chế độ sau dấu trừ sẽ bị tắt. Ví dụ. (?i-sm) bật trường hợp không nhạy cảm, và tắt cả chế độ một đường và chế độ nhiều đường.

Không phải tất cả các hương vị regex đều hỗ trợ điều này. JavaScript và Python áp dụng tất cả các công cụ sửa đổi chế độ cho toàn bộ cụm từ thông dụng. Chúng không hỗ trợ cú pháp (?-ismx), vì việc tắt một tùy chọn là vô nghĩa khi các công cụ sửa đổi chế độ áp dụng cho toàn bộ cụm từ thông dụng. Tất cả các tùy chọn được tắt theo mặc định.

Bạn có thể nhanh chóng kiểm tra xem hương vị regex bạn đang sử dụng công cụ sửa đổi chế độ xử lý như thế nào. Regex (?i)te(?-i)st phải khớp với testTEst, nhưng không phải teST hoặc TEST.

?i có nghĩa là mọi thứ theo các ký tự này phải khớp với phân biệt chữ hoa chữ thường.

Cũng lưu ý rằng, như văn bản cho biết, không phải tất cả các hương vị regex đều hỗ trợ cú pháp này.

+0

Tuyệt vời! Hiểu rồi. BTW, đó là một trang web tuyệt vời –

Các vấn đề liên quan