2013-04-13 18 views

Trả lời

13

thể có ý nghĩa khác nhau, nếu cờ x sửa đổi để cho phép "không gian trống" giữa thẻ trong regex được kích hoạt (để có thể đọc và cho phép bình luận trong regex). Nhưng nếu cài đặt này không được bật, thì không có sự khác biệt về chức năng giữa hai cài đặt này.

Tham khảo Regex Tutorial này cho một lời giải thích chi tiết về các tùy chọn này đặc biệt, nơi mà nó khẳng định:

... chế độ tự do khoảng cách không có tác dụng bên trong các lớp nhân vật. Dấu cách và ngắt dòng bên trong các lớp ký tự sẽ được bao gồm trong lớp nhân vật .

Hơn nữa, đối thẩm quyền cụ thể PHP, tham khảo Tài liệu PHP cho PCRE Pattern Modifiers trong đó nêu:

x (PCRE_EXTENDED) Nếu sửa đổi lần này được thiết lập, các ký tự dữ liệu khoảng trắng trong mô hình được hoàn toàn bị bỏ qua trừ khi đã trốn thoát hoặc bên trong một lớp nhân vật ...

giải thích cách triển khai công cụ sửa đổi theo các hương vị khác nhau của regex.

Cờ sửa đổi có thể được bao gồm trong chính regex là (?x) có nghĩa là không gian trống được bật từ điểm đó trong regex trở đi đến cuối của regex (hoặc đến mức đóng (?-x)). Đặc biệt đối với PHP, cờ sửa đổi có thể được áp dụng cho toàn bộ biểu thức bằng cách theo sau regex, ví dụ: (sử dụng một trong các ví dụ của bạn) / {0,3}/x

Định dạng khung hình vuông ([ ]) đại diện rõ ràng một không gian chữ bất kể cài đặt đó, và IMO tự ghi lại tài liệu; Nó rất rõ ràng cho thấy ý định của devoloper để sử dụng một không gian chữ, có lẽ là ưu tiên cho lớp nhân vật "\s" (cũng bao gồm các tab và các dòng mới).

Hơn nữa, và chỉ IMO, đây là cách thích hợp hơn để "thoát" một không gian dưới dạng chữ, trái ngược với việc sử dụng "\", có thể dễ dàng bị hiểu lầm hoặc bỏ qua bởi người bảo trì mã trong tương lai.

+0

Làm cách nào để bật/tắt cài đặt này? –

+0

Cài đặt "không gian trống" này có được bật không có cờ không? –

+1

@EmanuilRusev có cập nhật câu hỏi với một số liên kết tốt về công cụ sửa đổi. Sự hiểu biết của tôi về PHP bị hạn chế, nhưng tôi tin rằng câu trả lời là KHÔNG, bạn sẽ thấy lá cờ ở cuối chuỗi regex (theo dấu phân cách regex cuối).Tuy nhiên có thể có một số thiết lập "toàn cầu" hơn có thể kích hoạt nó. Bạn có thể kiểm tra xem nó có được bật hay không, ví dụ: kiểm tra "xx" so với/xx/phải khớp với nếu nó KHÔNG được bật, nhưng không được khớp nếu IS được bật (vì bạn cần xóa không gian một cách rõ ràng) một chữ để nó không được coi là không gian trống). – Sepster

4

Chúng tạo ra cùng một kết quả, nhưng một trong ngoặc vuông dễ đọc hơn và có chủ ý hơn.

Cá nhân tôi muốn sử dụng \s trừ khi không gian theo nghĩa đen là điều duy nhất cho phép.

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