2012-02-21 35 views
5

Thứ tự ưu tiên toán tử được ghi trong lớp .NET Regex ở đâu?Ưu tiên toán tử được ghi trong lớp .NET Regex ở đâu?

Tôi thấy this, nhưng đó là dành cho JScript.

Ngoài ra, dường như điều này không bị ảnh hưởng bởi RegexOptions.ECMAScript, nhưng xác nhận sẽ hữu ích.

+0

Có thể thấy biểu thức làm bạn bối rối không? – zerkms

+1

Ưu tiên tương tự như trong liên kết JScript: các toán tử đơn nhất liên kết chặt chẽ nhất, sau đó ghép nối, sau đó luân phiên. Chân đế hoạt động như bạn mong đợi. – porges

+0

@zerkms, tôi đang viết các biểu thức và tôi muốn biết khi nào tôi cần parens. Porges, đó là những gì tôi hy vọng, nhưng tôi muốn thấy nó được ghi lại. Nếu không, tôi sẽ gửi một lỗi Kết nối. –

Trả lời

1

Tôi không nghĩ câu trả lời thực sự đơn giản như bạn muốn. Câu trả lời ngắn (và không đầy đủ) chỉ đơn giản là "tất cả các biểu thức được đánh giá từ trái sang phải" ...

Để có câu trả lời dài, hãy truy cập vào đây.

http://msdn.microsoft.com/en-us/library/e347654k.aspx

.NET Framework cơ biểu thức chính quy là một backtracking thường xuyên biểu hiện khớp mà kết hợp một động cơ không xác định (NFA) hữu hạn Automaton truyền thống ... động cơ NFA truyền thống thực hiện khớp mẫu, của họ thứ tự xử lý được điều khiển bởi mẫu biểu thức thông thường. Vì nó xử lý một phần tử ngôn ngữ cụ thể, động cơ sử dụng kết hợp tham lam; nghĩa là, nó khớp với nhiều chuỗi đầu vào vì nó có thể có thể. Nhưng nó cũng lưu trạng thái của nó sau khi kết hợp thành công một biểu thức con. Nếu trận đấu cuối cùng không thành công, công cụ có thể trở về trạng thái đã lưu để có thể thử thêm các trận đấu bổ sung.

Chỉnh sửa: Quên trả lời phần thứ hai của câu hỏi của bạn.

liên quan đến RegexOptions.ECMAScript Với, bạn có thể tham khảo các tài liệu:

http://msdn.microsoft.com/en-us/library/yd1hzczs.aspx

Hành vi của ECMAScript và biểu thức thông thường kinh điển khác trong ba lĩnh vực: nhân vật lớp cú pháp, tự tham khảo chụp nhóm và phân giải bát phân và so sánh ngược.

Nó không giống như "thứ tự" bị ảnh hưởng, nhưng có thể có các vấn đề khác. Các tài liệu làm một công việc tốt để minh họa sự khác biệt.

+1

Thứ tự xử lý khác với thứ tự ưu tiên của toán tử. Thứ tự xử lý mô tả cách nó được thực hiện (trên mỗi đầu vào) sau khi nó được phân tích cú pháp. Ưu tiên toán tử là một phần quan trọng trong cách phân tích cú pháp. Tôi đồng ý rằng "tất cả các biểu thức được đánh giá từ trái sang phải" không phải là câu trả lời hoàn chỉnh. Nếu có, '^ \ d' sẽ là dấu gạch chéo ở đầu chuỗi (^ \\), sau đó là chữ' d'. –

1

Điều này đã được hỏi một thời gian dài trước đây, nhưng không được trả lời.

Tỷ lệ tiền tố toán tử .Net được xác định ở cuối trang Cú pháp biểu thức chính quy 1.

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