2011-04-13 54 views
5

嘿,我试图从字符串中提取某些信息。该字符串看起来像“Name:music mix.mp3大小:2356KB”。我只想用扩展名提取文件名。在正则表达式中我没有太多的知识,所以我希望能在这里得到一些帮助。 谢谢!正则表达式帮助提取字符串的某些部分

+1

不要在Accpet头率以及:) – 2011-04-13 14:34:09

+0

在你的榜样,很多知识是文件名 “音乐mix.mp3”? – 2011-04-13 14:40:50

+0

是的。这是一个列表框项目btw – Ravana 2011-04-13 14:44:30

回答

13

请检查下面的例子:

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。可能值得在开始时加一个'^'来锚定它;它会使正则表达式更有效率。 – Spudley 2011-04-13 14:38:09

1

这是正则表达式

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

这个表达式组返回音乐mix.mp3如果文件名是空白

 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

使用正则表达式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