我正在讀取一些數據文件中的程序,其中一部分格式化爲一系列記錄,每個記錄都放在方括號中。每個記錄都包含一個節標題和一系列鍵/值對。你可以改進這個C#正則表達式代碼嗎?
我最初編寫的代碼循環並提取值,但決定可以使用正則表達式更優雅地完成。下面是我的結果代碼(我剛剛在一個控制檯應用程序中入侵了它 - 所以知道變量名稱並不是那麼好,等等。
你可以提出改進建議嗎?我認爲不應該有必要做兩場比賽和子,但無法弄清楚如何做到這一切在一個大的步驟:
string input = "[section1 key1=value1 key2=value2][section2 key1=value1 key2=value2 key3=value3][section3 key1=value1]";
MatchCollection matches=Regex.Matches(input, @"\[[^\]]*\]");
foreach (Match match in matches)
{
string subinput = match.Value;
int firstSpace = subinput.IndexOf(' ');
string section = subinput.Substring(1, firstSpace-1);
Console.WriteLine(section);
MatchCollection newMatches = Regex.Matches(subinput.Substring(firstSpace + 1), @"\s*(\w+)\s*=\s*(\w+)\s*");
foreach (Match newMatch in newMatches)
{
Console.WriteLine("{0}={1}", newMatch.Groups[1].Value, newMatch.Groups[2].Value);
}
}
不錯,我不知道如何使用IgnorePatternWhitespace選項讓你格式化正則表達式。謝謝你的提示。 – 2009-06-23 04:36:40