2012-05-16 60 views
0

我有必要分析和轉換某種URL的一部分,這裏是我該怎麼辦,現在:在這種情況下正則表達式的正確使用是什麼?

Regex s_re = new Regex(@"^/(lang_([^/]*)/)?([^/]*)([^\?]*)\??(.*)$", RegexOptions.IgnoreCase); 

const string Url = "..."; 

MatchCollection matches = s_re.Matches(Url); 
if(matches.Count==0) return false;//can't find matches 

string strLang = s_re.Replace(Url, @"$2"); 
string strAddr = s_re.Replace(Url, @"$3"); 

我是否正確理解,在這種情況下,我的URL解析3次(原比賽和每更換)。在最好的情況下,它只能被解析一次,結果應該被使用。

我懷疑,而不是以下呼籲「替換」我應該使用別的東西,但不能找到什麼。

您能否提供建議?

謝謝。

回答

2

你應該做的是這樣的:

Match match = regexData.Match(line); 
if (!match.Success) return false; 
string val1 = match.Groups[0].Value; 
string val2 = match.Groups[1].Value; 

此外,你可能想使用RegexOptions.CultureInvariant與RegexOptions.IgnoreCase,否則它使用當地的文化,而不是統一的外殼約定。 more on msdn

相關問題