正则表达式从文件名中找到文件名,旁边有大小。例如。 " test.pdf(54 KB)"

时间:2016-02-11 22:36:40

标签: c# regex

我想在C#中使用RegEx从具有fileName和filesize(可选)的字符串中提取fileName

的示例:

test.pdf(54 KB) - fileName是test.pdf

test.pdf - fileName是test.pdf

test.pdf(test)(54 KB) - fileName是test.pdf(test)

test.pdf(test) - fileName是test.pdf(test)

我的尝试在下面给出

 string pattern = @"(.*)\s*\(\s\d+\sKB\s\)$";
 matches = Regex.Matches(fileName, pattern, RegexOptions.IgnoreCase);
 actualFileName = matches[0].Groups[1].Value;

但是如果输入旁边没有fileSize,那就失败了。

1 个答案:

答案 0 :(得分:1)

使用?使第一个匹配非贪婪,使用?使第二个部分可选(不同含义和用法)。

@"(.*?)\s*(?:\(\s*\d+\s*KB\s*\))?$"

请注意,在大小部分周围使用(?:)非捕获组,并在其后面使用?将组修改为可选。