RegEx:按分隔符分割字符串,然后按另一个分割

时间:2013-06-12 12:20:57

标签: c# .net regex

所需行为存在问题。

假设有

sourceString = @"name1$$value1^name2$$value2^name3$$value3";

也许更长的字符串...

我想首先按^分隔符然后按另一个$$分割,以根据此名称 - 值对创建字典。

此字符串存储在文件中,因此可能太长,任何拆分操作可能会花费太多时间。 我希望^和内部群组匹配$$匹配正则表达式。

2 个答案:

答案 0 :(得分:3)

此正则表达式(.*?)\$\$(.*?)(?:\^|$)将匹配名称值对,此处为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();
}

答案 1 :(得分:0)

为什么不使用:

sourceString.Split(new char[] {'^'}, StringSplitOptions.RemoveEmptyEntries)

然后你可以为$$

做同样的事情