使用正则表达式将字符串拆分为{curly}子字符串,但包括{}

Nib*_*Pig 1 c# regex

我有这个字符串:

var s = "Cat{biscuits}Flaps";

输出应该是:


{饼干}
皮瓣

我可以迭代这个:

Regex.Split(input, @"{(?<p>[^}]*)}");

然而,它从饼干中删除了{}

你能建议一个包含{}的正则表达式给出上面的输出吗?

Wik*_*żew 6

在整个模式周围使用捕获组:

var chunks = Regex.Split(input, @"({[^}]*})");
                                  ^       ^  
Run Code Online (Sandbox Code Playgroud)

查看C#演示:

var s = "Cat{biscuits}Flaps";
var chunks = Regex.Split(s, @"({[^}]*})");
Console.WriteLine(string.Join("\n", chunks));
Run Code Online (Sandbox Code Playgroud)

Regex.Split参考文献:

如果在Regex.Split表达式中使用捕获括号,则任何捕获的文本都包含在结果字符串数组中.