2012-04-10 11 views
13

jestem w obliczu problemu z Regex ... musiałem dopasować sharepoint URL .. muszę dopasować „najkrótsza”Jak dopasować z Regex „najkrótszy mecz” w .NET

Coś jak:

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

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

m.Value równa całego łańcucha ...

Jak mogę zrobić to dopasować

http://aaaaaaa/sites/aaaa/ 

i nic innego ??

Dziękuję bardzo!

Odpowiedz

19

.+ jest zachłanny, więc będzie dopasować tak wiele znaków jak to możliwe przed zatrzymaniem. Zmień go .+? i mecz zakończy się tak szybko, jak to możliwe:

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

Spróbuj spróbuj dopasować wszystko do wyrażenia, ale zamiast tego po prostu wszystko, zamiast /. Odbywa się to za pomocą nie postaci atomu klasy postaci [^].

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

to nadal pasuje do wszystkiego, co musisz zrobić to leniwy myślę '+/sites/[^ /] + /' – Robbie

+0

@Robbie.? przetestuj to, działa – JaredPar

+1

+1 masz rację, myślę, że to był błąd wklejania kopii z mojej strony, kiedy testowałem go po raz pierwszy (i wyraźnie brak zrozumienia do rozruchu) – Robbie