2013-04-24 63 views
7

Trong java, sự khác biệt giữa "\\d+""\\d++" là gì? Tôi biết ++ là một định lượng sở hữu, nhưng sự khác biệt trong khớp với chuỗi số là gì? Chuỗi nào có thể khớp với "\\d+" nhưng không thể với "\\d++"? Chỉ số định lượng sở hữu có vẻ là đáng kể với chỉ số lượng ".*". Có đúng không?Sự khác nhau giữa "\ d +" và "\ d ++" trong java regex

Trả lời

0

\ d + Phương tiện: Đi
\d có nghĩa là một chữ số (nhân vật trong phạm vi 0-9), và + nghĩa 1 hoặc nhiều lần. Vì vậy, \d+ là 1 hoặc nhiều chữ số.

\ d ++ Phương tiện từ Quantifiers

này được gọi là quantifiers sở hữu và họ luôn ăn toàn bộ chuỗi đầu vào, cố gắng một lần (và chỉ một lần) cho một trận đấu. Không giống như các định lượng tham lam, các định lượng sở hữu không bao giờ lùi lại, ngay cả khi làm như vậy sẽ cho phép kết hợp tổng thể thành công.

+0

Câu hỏi là về '\ d ++'. – Blender

+1

Trích dẫn trong câu trả lời của bạn không chính xác và không thể tìm thấy câu trả lời trên trang bạn đã liên kết. Các định lượng sở hữu không phải lúc nào cũng "ăn toàn bộ chuỗi đầu vào". –

10

Các bộ định lượng sở hữu sẽ không lùi lại, ngay cả khi cần phải có một số sao lưu cho toàn bộ kết hợp. Ví dụ: \d++ sẽ khớp với tất cả các chữ số, bao gồm cả 0 cần thiết để khớp với biểu tượng cuối cùng của regex.

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