1

所需行为存在问题。

假设有一个

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

也许更长的字符串...

我想先按^分隔符拆分,然后再按另一个拆分,$$以基于此名称-值对创建字典。

该字符串存储在文件中,因此可能太长,任何拆分操作都可能花费太多时间。我希望有一个带有 match by^和 internal groupmatch by的正则表达式$$

4

2 回答 2

3

这个正则表达式(.*?)\$\$(.*?)(?:\^|$)将匹配名称值对,这里有一个Rubular 来证明它。要使用它,您可以使用以下代码:

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();
}
于 2013-06-12T12:26:48.240 回答
0

为什么不使用:

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

然后你可以为 $$ 做同样的事情

于 2013-06-12T12:29:59.330 回答