2012-06-11 135 views
0

我有一個精確定義這樣的字符串擴展:Regex.Match不工作正確

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專業版。

請幫忙。提前致謝。

回答

2

因爲你指定要排除捕獲組您正則表達式中的字符)[^)]@"([^)]*)"

而且由於)出現的第一個字符串:Valderama (1).jpg,它將不能夠匹配。

你可能想@"(.*)"代替。

+0

我怎樣才能改變,沒有發生衝突的'('和')'符號?請幫忙。 –

+0

非常感謝。 :) –