2012-04-10 30 views
13

Tôi đang phải đối mặt với một vấn đề với Regex ... Tôi phải phù hợp với URL SharePoint .. tôi cần phải phù hợp với "ngắn"Làm thế nào để Phù hợp với Regex "trận đấu ngắn nhất" trong .NET

Cái gì như:

http://aaaaaa/sites/aaaa/aaaaaa/ 

m = Regex.Match(URL, ".+/sites/.+/"); 

m.Value tương đương với toàn bộ chuỗi ...

làm thế nào tôi có thể làm cho nó phù hợp với

http://aaaaaaa/sites/aaaa/ 

và không có gì khác ??

Cảm ơn bạn rất nhiều!

Trả lời

19

.+ tham lam, vì vậy nó sẽ khớp với nhiều ký tự nhất có thể trước khi dừng. Thay đổi nó để .+? và trận đấu sẽ kết thúc càng sớm càng tốt:

m = Regex.Match(URL, ".+/sites/.+?/"); 
6

Hãy thử làm cho regex phù hợp với mọi thứ nhưng thay vì chỉ đơn giản là tất cả mọi thứ. Điều này được thực hiện bằng cách sử dụng hình thức không phải của nguyên tử lớp nhân vật [^].

m = Regex.Match(URL, ".+/sites/[^/]+/"); 
+0

này vẫn phù hợp với tất cả mọi thứ, bạn cần phải làm cho nó lười biếng tôi nghĩ rằng '+/trang web/[^ /] + /' – Robbie

+0

@Robbie.? thử nghiệm nó ra, nó hoạt động – JaredPar

+1

+1 bạn đúng, tôi nghĩ rằng đó là một lỗi dán bản sao trên một phần của tôi khi tôi thử nghiệm nó lần đầu tiên (và rõ ràng là thiếu hiểu biết để khởi động) – Robbie

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