【发布时间】:2013-06-12 12:20:57
【问题描述】:
所需行为存在问题。
假设有一个
sourceString = @"name1$$value1^name2$$value2^name3$$value3";
也许更长的字符串...
我想先用^ 分隔符分割,然后再用另一个$$ 分割,以根据这个名称-值对创建字典。
此字符串存储在文件中,因此可能太长,任何拆分操作都可能花费太多时间。
我希望有一个由^ 匹配和$$ 内部组匹配的正则表达式。
【问题讨论】:
所需行为存在问题。
假设有一个
sourceString = @"name1$$value1^name2$$value2^name3$$value3";
也许更长的字符串...
我想先用^ 分隔符分割,然后再用另一个$$ 分割,以根据这个名称-值对创建字典。
此字符串存储在文件中,因此可能太长,任何拆分操作都可能花费太多时间。
我希望有一个由^ 匹配和$$ 内部组匹配的正则表达式。
【问题讨论】:
这个正则表达式(.*?)\$\$(.*?)(?:\^|$) 将匹配名称值对,这里是Rubular to prove it。要使用它,您可以使用以下代码:
var input = "name1$$value1^name2$$value2^name3$$value3";
var pattern = @"(.*?)\$\$(.*?)(?:\^|$)";
var hash = new Dictionary<string, string>();
var match = Regex.Match(input, pattern);
while (match.Success)
{
hash.Add(match.Groups[1].Value, match.Groups[2].Value);
match = match.NextMatch();
}
【讨论】:
为什么不使用:
sourceString.Split(new char[] {'^'}, StringSplitOptions.RemoveEmptyEntries)
那么你可以对 $$ 做同样的事情
【讨论】: