Obtener una expresión regular para que coincida con la oración en una cadena

Estoy tratando de extraer esto ("5013a27a-3e44d69d-4120-080027a10080" varía)

/vmfs/volumes/5013a27a-3e44d69d-4120-080027a10080 

de esto (que es una cadena):

name                 datastore1
url                  /vmfs/volumes/5013a27a-3e44d69d-4120-080027a10080
capacity             123480309760
freeSpace            96355745792
accessible           1
type                 VMFS
multipleHostAccess   <unset>

Así que he hecho lo siguiente, pero no funciona:

Regex regex = new Regex(@"[/][A-Za-z0-9/-][/] [ ]");
MatchCollection match = regex.Matches(input);

donde me he equivocado

preguntado el 28 de julio de 12 a las 15:07

Casi en todas partes :) Esa expresión regular coincidirá /p/ , y no mucho más. -

Espresso cualquiera ? :) -

2 Respuestas

Prueba esta expresión regular:

@"/([A-Za-z0-9/-]+)"

Obtenga el valor del grupo 1.

Respondido 28 Jul 12, 15:07

Gracias, pero ¿qué significa el + solo? - user1559618

@user1559618: No está solo. Significa "coincidir con una o más apariciones del elemento anterior". Entonces, una barra inclinada literal, seguida de un grupo que contiene una o más letras, números o guiones. - Ry-

string url = Regex.Match(text, @"url\s+(.+)").Groups[1].Value;

Creo que esto es más confiable que buscar una barra oblicua. \s coincide con cualquier carácter de espacio en blanco, que se encargará del espacio en blanco entre "url" y el valor.

Respondido 28 Jul 12, 15:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.