Почему Regex.Split сохраняет разделитель при разбиении на регулярное выражение - PullRequest
3 голосов
/ 09 мая 2019

У меня есть следующий код, разбивающий строку на регулярное выражение:

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

Почему он не теряет разделители?

1 Ответ

3 голосов
/ 09 мая 2019

Вы помещаете разделители в группу захвата, используя (...).Удалите их, и все будет работать нормально:

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

Вывод:

тест
3
regred

Дляссылка здесь обратный вопрос

...