2011-04-13 8 views
5

Hey Im tratando de extraer cierta información de una cadena. The String se ve como "Nombre: music mix.mp3 Size: 2356KB". Me gustaría extraer el nombre del archivo solo con la extensión. No tengo mucho conocimiento en regex, así que esperaba obtener ayuda aquí. Gracias!Regex ayuda con la extracción de cierta parte de un String

+1

no mucho conocimiento de la tasa de Accpet así :) –

+0

En su ejemplo, es el nombre de archivo "mix.mp3 música"? –

+0

Sí lo es. Es un elemento del cuadro de lista por cierto – Ravana

Respuesta

13

favor verifique este ejemplo:

const string str = "Name: music mix.mp3 Size: 2356KB"; 
var match = Regex.Match(str, "Name: (.*) Size:"); 
Console.WriteLine("Match: " + match.Groups[1].Value); 
+0

+1. podría valer la pena agregar un '^' al inicio para anclarlo; Hará que la expresión regular sea más eficiente. – Spudley

1

Se trata de expresiones regulares

Name:\s*(?<FileName>[\w\s]+.\w{3}) 

este regex devolver el mix.mp3 música en grupo, si el nombre del archivo es con espacios en blanco

 string strRegex = @"Name:\s*(?<FileName>[\w\s]+.\w{3})"; 

     Regex myRegex = new Regex(strRegex); 
     string strTargetString = @"Name: music mix.mp3 Size: 2356KB"; 

     Match myMatch = myRegex.Match(strTargetString); 

     string fileName = myMatch.Groups["FileName"].Value; 
     Console.WriteLine(fileName); 
2

Solución que utiliza la característica de regex lookaround.

String sourcestring = "Name: music mix.mp3 Size: 2356KB"; 
Regex re = new Regex(@"(?<=^Name:).+(?= Size:)"); 
Match m = re.Match(sourcestring); 
Console.WriteLine("Match: " + m.Groups[0].Value); 

Example code here

Cuestiones relacionadas