我需要解析 iOS 的 *.strings 文件以获取带有注释的键/值对。例如:
/* comment */
"key" = "value";
一旦我找到了这条线并检查了它的有效性(我已经设法做到了),我需要捕获它和它之前的评论。
困难在于:
- 并非每一行之前都有注释,因此我无法捕获以 /* 开头并以分号结尾的整个块;
- 可能有下面一行的注释,但该行的格式可能无效,因此它应该连同它的注释一起被跳过。
所以我必须检测键/值行,然后如果存在就上去评论。
正则表达式可以倒退吗?
PS我正在使用.NET Framework来解析:
string[] lines = File.ReadAllLines(fileName);
foreach (string line in lines)
{
string[] kvp = Regex.Split(line, "\"\\s+?=\\s+?\"");
if (kvp.Length == 2 && kvp[0].StartsWith("\"") && kvp[1].EndsWith("\";"))
{
DataRow row = table.NewRow();
row["name"] = kvp[0].TrimStart('"');
row["text"] = kvp[1].Substring(0, kvp[1].Length - 2);
row["fileId"] = fileId;
table.Rows.Add(row);
}
}