首页 > 解决方案 > 为什么 Regex.Split 在正则表达式上拆分时保留分隔符

问题描述

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

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

为什么它不丢失分隔符?

标签: c#stringsplitdelimiter

解决方案


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

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

输出:

测试
3
重新设置

供参考这里是反问题


推荐阅读