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 でビルドされています。

助けてください。前もって感謝します。

4

1 に答える 1

2

)正規表現のキャプチャ グループで文字を除外するように指定しているため[^)]:@"([^)]*)"

そして)、最初の文字列: に出現するValderama (1).jpgため、一致することはありません。

@"(.*)"おそらく代わりに欲しいでしょう。

于 2012-06-11T10:11:26.543 に答える