提取字符串的正则表达式

19

嘿,我正在尝试从一个字符串中提取特定的信息。这个字符串看起来像:

名称:music mix.mp3 大小:2356KB

我只想提取带有扩展名的文件名。
我对正则表达式并不是很了解,所以我希望在这里得到一些帮助。谢谢!


1
对于接受率,我的知识不是很丰富 :) - Felice Pollano
在你的例子中,文件名是“music mix.mp3”吗? - Justin Morgan
是的,没错。顺便说一下,它是一个列表框项。 - Ravana
3个回答

34

请查看这个示例:

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

2
可能值得在开头添加一个^以锚定它;这将使正则表达式更高效。 - Spudley

6
使用正则表达式的先行断言功能解决方案。
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


4

这是正则表达式

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);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接