2012-04-10 13 views
13

estoy frente a un problema con expresiones regulares ... tenía que coincidir con la URL de SharePoint .. tengo que coincidir con el "más corto"Cómo hacer coincidir con la expresión regular "partido más corto" en .NET

Algo así como:

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

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

m.Value es igual a toda la cadena ...

¿Cómo puedo hacer que se acople

http://aaaaaaa/sites/aaaa/ 

y nada más ??

¡Muchas gracias!

Respuesta

19

.+ es codicioso, por lo que coincidirá con tantos caracteres como sea posible antes de detenerse. Cambiarlo a .+? y el partido terminará tan pronto como sea posible:

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

Intenta hacer que la expresión regular coincida con todo menos un / en lugar de simplemente todo. Esto se hace utilizando la forma no del átomo de la clase de caracteres [^].

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

esto todavía partidos de todo, es necesario que sea perezoso pienso que '+/sitios/[^ /] + /' – Robbie

+0

@Robbie.? pruébalo, funciona – JaredPar

+1

+1 tienes razón, creo que fue un error de copiado de mi parte cuando lo probé por primera vez (y claramente una falta de comprensión para arrancar) – Robbie

Cuestiones relacionadas