Regex.Match无法正常工作

时间:2012-06-11 10:08:37

标签: c# regex .net-4.0

我有一个字符串扩展名,其定义完全如下:

public static string GetStringBetween(this string value, string start, string end)
{
    start = Regex.Escape(start);
    end = Regex.Escape(end);

    GroupCollection matches = Regex.Match(value, start + @"([^)]*)" + end).Groups;

    return matches[1].Value;
}

但是当我这样称呼时:

string str = "The pre-inspection image A. Valderama (1).jpg of client Valderama is not...";
Console.WriteLine(str.GetStringBetween("pre-inspection image ", " of client"));

它没有写任何东西。但是当str值是这样的时候:

string str = "The pre-inspection image A. Valderama.jpg of client Valderama is not...";

工作正常。为什么会这样?

我的代码在C#,框架4中,在VS2010 Pro中构建。

请帮忙。提前谢谢。

1 个答案:

答案 0 :(得分:2)

因为您指定要排除正则表达式的捕获组中的字符)[^)]中的@"([^)]*)"

由于)出现在第一个字符串中:Valderama (1).jpg,它将无法匹配。

您可能需要@"(.*)"