2012-05-15 33 views
5

Tôi đã nghĩ rằng đây là bản cập nhật cho số previous similar question của mình nhưng quá dài.Dấu hoa thị không cần thiết trong regex tìm thấy nhận xét CSS

Tôi đã cố gắng tìm hiểu một regex được đưa ra trong w3.org phù hợp với ý kiến ​​css và có nghi ngờ này

Tại sao họ sử dụng

\/\*[^*]*\*+([^/*][^*]*\*+)*\/ 
----------------^ 

thay vì chỉ

\/\*[^*]*\*+([^/][^*]*\*+)*\/ 

?

Cả hai đều hoạt động tương tự. Tại sao họ lại có thêm một ngôi sao nữa?

  1. Hãy nhìn vào phần này:

    \*+([^/*][^*]*\*+)* 
    -A- --B--  -C- 
    

    Regex cơ sẽ phân tích Một phần và phù hợp với tất cả các ngôi sao cho đến khi có sao NO MORE hoặc có một ngắt dòng. Vì vậy, khi A được thực hiện, ký tự tiếp theo phải là ngắt dòng hoặc bất kỳ thứ gì khác không phải là dấu sao. Vậy tại sao thay vì sử dụng [^/] họ đã sử dụng [^/*]?

  2. Ngoài ra, hãy xem nhóm chụp lặp lại.

    ([bất kỳ char một đó không phải/hoặc *] [không hay nhiều ký tự đó không phải là *] [một hoặc nhiều sao])

    Nó bắt nhóm ký tự kết thúc với ít nhất một hoặc nhiều ngôi sao. Vì vậy, C sẽ đưa tất cả các ngôi sao rời khỏi B mà không có sao để phù hợp trong vòng tiếp theo.

    Vì vậy, phần B sẽ không có cơ hội gặp bất kỳ ngôi sao nào cả. Đó là lý do tại sao tôi nghĩ rằng không cần phải đặt một ngôi sao ở đó.

Nhưng regex đó nằm trong w3.org vì vậy tôi đoán rằng sự hiểu biết của tôi có thể sai. Hãy giải thích những gì tôi đang thiếu.

Trả lời

3

này đã được sửa chữa trong CSS3 Syntax module:

\/\*[^*]*\*+([^/][^*]*\*+)*\/ /* ignore comments */ 

Chú ý rằng các dấu hoa thị không liên quan đã biến mất, làm cho biểu thức này giống hệt với những gì bạn có.

Vì vậy, có vẻ như nó chỉ đơn giản là một sai lầm về phía họ khi viết ngữ pháp cho CSS2. Tôi đang đào các lưu trữ danh sách gửi thư để xem liệu có bất kỳ cuộc thảo luận nào có thể có liên quan hay không.

+0

OMG! Vì vậy, tôi đã đúng (và muộn để tìm hiểu.) Tôi chỉ nghĩ rằng họ phải đúng và kiệt sức tâm trí của tôi cố gắng tìm thấy những gì tôi đang mất tích. Tôi không nghĩ rằng nó đã được thay đổi trong CSS3. Cảm ơn. – Vigneshwaran

+0

Có. Tôi đang chờ liên kết của bạn đến bất kỳ cuộc thảo luận có liên quan nào. – Vigneshwaran

+0

Tôi dường như không thể tìm thấy bất cứ điều gì:/ – BoltClock

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