Regex.Split 帮助在 C# 中

本文关键字:帮助 Split Regex | 更新日期: 2023-09-27 17:57:12

我有这个字符串:

A,B,C[D,E,F[G,H,J[I]],K,L[M,N] 

使用Regex.Split(),我需要像这样划分结果:

A,B
C[D,E]
F[G,H]
J[I]
K
L[M,N]

Regex.Split 帮助在 C# 中

我不确定您是否可以纯粹使用正则表达式来做到这一点(如果可能的话,我怀疑所需的正则表达式会非常复杂)。

这是一种替代方法,尽管最好完全跳过正则表达式并手动解析所有内容:

string yourString = "A,B,C[D,E,F[G,H,J[I]],K,L[M,N]";
var parts = Regex.Split(yourString, @",(?=[^,'[]+'[)|']+,?")
                 .Where(s => s.Length > 0)
                 .Select(s => s.Contains("[") ? s + "]" : s);

试试这个:

Regex re = new Regex(@"((?:'w+)'[(?:(?:'w+'b,?)(?!'[))+)");
var result = re.Split(str.Replace(" ", ""))
               .Select(s => s.TrimEnd(',', '[').TrimStart(']', ','))
               .Where(s => !string.IsNullOrEmpty(s));