2012-04-10 20 views
13

sto affrontando un problema con Regex ... Ho dovuto corrispondere URL SharePoint .. Ho bisogno di corrispondere al "più breve"Come abbinare con Regex "partita più breve" in .NET

Qualcosa di simile:

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

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

m.Value è uguale a tutta la stringa di ...

Come posso farlo corrispondere

http://aaaaaaa/sites/aaaa/ 

e nient'altro ??

Grazie mille!

risposta

19

.+ è avido, in modo che abbinerà il maggior numero possibile di caratteri prima di fermarsi. Cambiarlo in .+? e la partita si concluderà al più presto possibile:

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

Prova a fare l'espressione regolare che corrisponde a tutto tranne che a / invece di semplicemente tutto. Questo viene fatto usando la non forma della classe personaggio atom [^].

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

questa partite ancora tutto, è necessario rendere più pigro penso '+/siti/[^ /] + /' – Robbie

+0

@Robbie.? provalo, funziona – JaredPar

+1

+1 hai ragione, penso che sia stato un errore di copia da parte mia quando l'ho provato la prima volta (e chiaramente una mancanza di comprensione per l'avvio) – Robbie

Problemi correlati