为什么 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
我有以下代码在正则表达式上拆分字符串:
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