为什么 Regex.Split 在拆分正则表达式时保留分隔符

Why is Regex.Split keeping the delimiter when splitting on a regex

我有以下代码在正则表达式上拆分字符串:

string s = "test;3 régred";
string[] authorsList = Regex.Split(s, "(\s+)|([\p{P}\p{S}])");
foreach (string q in authorsList)
{
    Console.WriteLine(q);
}

应该是分裂和只保留:

test 3 régred

但它正在存储

test ; 3 *space* régred

为什么不丢失分隔符?

您使用 (...) 将分隔符放入捕获组。删除它们,它将正常工作:

string[] authorsList = Regex.Split(s, @"\s+|[\p{P}\p{S}]");

输出:

test
3
régred

此处供参考inverse question