2009-07-13 36 views
11

Tôi đang đọc tài liệu PCRE và nó đề cập đến định lượng sở hữu, nhưng không xác định rõ ràng hoặc cụ thể chúng. Tôi biết định lượng tham lam là gì, và tôi biết lượng tử lười là gì. Nhưng sở hữu?Ai đó có thể giải thích các số liệu có khả năng cho tôi? (Biểu thức chính quy)

PCRE man page dường như gian lận khi sử dụng cụm từ mà không xác định cụm từ đó. Trang hướng dẫn cụ thể nêu rõ rằng số định lượng sở hữu lần đầu tiên được xác định trong Friedl's book. Vâng, đó là tuyệt vời, nhưng tôi không có cuốn sách của Friedl, và trong việc đọc trang người đàn ông, giữa các dòng, tôi không thể tìm ra những gì phân biệt các định lượng sở hữu từ những người tham lam.

  • ? = không hoặc một, tham lam
  • ?? = Zero hoặc một, lười biếng
  • ? + = Zero hoặc một, sở hữu
  • '+' = một hoặc nhiều, tham lam
  • +? = Một hoặc nhiều, lười biếng
  • ++ = một hoặc nhiều, sở hữu
+0

Câu hỏi này đã được thêm vào [FAQ Overflow Regular Expression FAQ] (http://stackoverflow.com/a/22944075/2736496), trong "Quantifiers> More on the difference ..." – aliteralmind

Trả lời

11

lẽ là nơi tốt nhất để bắt đầu là Regex Tutorial - Possessive Quantifiers:

Khi thảo luận về sự lặp lại khai thác hoặc quantifiers, tôi đã giải thích sự khác biệt giữa sự lặp lại tham lam và lười biếng . Tham lam và lười biếng xác định thứ tự trong đó công cụ regex cố gắng hoán vị có thể của mẫu regex. Số phân tích tham số tham lam đầu tiên sẽ cố gắng lặp lại mã thông báo nhiều lần nhất có thể, và từ từ bỏ các kết quả phù hợp làm nhạc nền động cơ để tìm tổng số trận đấu tổng thể. Bộ định lượng lười sẽ đầu tiên là lặp lại mã thông báo vài lần như yêu cầu và dần dần mở rộng kết hợp khi công cụ phát lại qua regex để tìm một kết hợp chung.


quantifiers sở hữu là một cách để ngăn chặn động cơ regex từ thử tất cả các hoán vị. Điều này chủ yếu hữu ích cho các lý do hiệu suất . Bạn cũng có thể sử dụng các định lượng sở hữu để loại bỏ các kết quả phù hợp nhất định .

+8

Ahh, Tôi hiểu rồi! Sau khi đọc hướng dẫn đó, có vẻ như tôi lười biếng không phải là đối diện của tham lam. Lười biếng nên được gọi là "hào phóng" có thể, và hình thức sở hữu thực sự nên được gọi là lười biếng, bởi vì định lượng sở hữu từ chối quay lại. Họ sẽ không làm bất kỳ công việc phụ, mà chỉ là darned lười biếng. – Cheeso

+4

định lượng sở hữu từ chối quay lại - đây là giải thích tốt nhất mà tôi đã đọc về nó. cảm ơn vì đã tóm tắt nó :) – vondip

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