正则表达式分裂围绕卷曲括号

Sea*_* C. 5 c# regex string split

我有一个字符串:

"abc{d}efg{hi}{jk}lm{n}"
Run Code Online (Sandbox Code Playgroud)

我希望它分为:

"abc","{d}","efg","{hi}","{jk}","lm","{n}"
Run Code Online (Sandbox Code Playgroud)

我使用这种模式[{}],结果是"abc","d","efg","hi","","jk","lm","n"

如何保持'{''}'在那里?我如何取出空""之间'}''{'

zx8*_*x81 7

使用全部匹配而不是拆分

请记住,Match All和Split是同一枚硬币的两面.

使用这个正则表达式:

{[^}]*}|[^{}]+
Run Code Online (Sandbox Code Playgroud)

查看DEMO中的匹配项.

要查看匹配项:

var myRegex = new Regex("{[^}]*}|[^{}]+");
Match matchResult = myRegex.Match(yourString);
while (matchResult.Success) {
    Console.WriteLine(matchResult.Value);
    matchResult = matchResult.NextMatch();
} 
Run Code Online (Sandbox Code Playgroud)

说明

  • 在交替的左侧|,{[^}]*}匹配{content in braces}
  • 在右侧,[^{}]+匹配任何非currs的字符