regex来匹配具有递归的逗号分隔的平衡方括号



我想要一个正则表达式来匹配逗号分隔的平衡方括号,其中方括号的内容可能是逗号分隔的均衡方括号本身。

以下是一些例子:

example 1
input = "[abc],[def]"
groups 
group 1 = "abc"
group 2 = "def"
example 2
input = "[[ghi],[jkl]],[mno[pqr]],[[stu]]"
groups
group 1 = "[ghi],[jkl]"
group 2 = "mno[pqr]"
group 3 = "[stu]"

请注意,在第二个示例中,"ghi"one_answers"jkl"不是它们自己的组。我不需要一直递归,我只需要一个正则表达式来查找"级别0"组。

以下是一些代码,可以让您开始了解如何解析这些值。

public static IEnumerable<string> SplitSquareBraketByComma(string input)
{
int start = 0;
int brakets = 0;
for(int i = 0; i < input.Length; i++)
{
if(input[i] == '[') 
{
brakets++;
continue;
}
if(input[i] == ']')
{
brakets--;
continue;
}
if(brakets == 0 && input[i] == ',')
{
yield return input.Substring(start, i - start);
start = i + 1;
}
}
if(start < input.Length)
{
yield return input.Substring(start);
}
}

它基本上保持括号的计数,当它看到一个逗号时,当打开的括号的数量为零时,它会从以前的拆分中拆分出一个新的字符串。

注意:它没有任何代码来检查输入是否有效(所有的括号都是平衡的(,因此它留在最外面的括号里以防万一。

最新更新