Храните только совпадающие шаблоны Regex.Split в C# - PullRequest
0 голосов
/ 13 февраля 2020

Я хочу сохранить только совпавшие шаблоны Regex.Split() и отказаться от другого текста.

Пример

Предположительно, я хочу напечатать из текста только прописные слова.

Console.WriteLine("Give input");
string input = Console.ReadLine();

string pattern = @"([A-Z]{2,})";
string[] words = Regex.Split(input, pattern);

foreach (var w in words)
  Console.WriteLine(w)

Ввод MY_NAME_IS_george_WHATS_YOUR_NAME обеспечивает вывод ниже.

Type an identifier
MY_NAME_IS_george_WHATS_YOUR_NAME

MY
_
NAME
_
IS
_george_
WHATS
_
YOUR
_
NAME

Type an identifier

Как видите, разбитый массив содержит строки, которые не соответствуют шаблону. Как я могу избежать печати текста, который не соответствует регулярному выражению?

1 Ответ

2 голосов
/ 13 февраля 2020

Кажется, вы не поняли, что делает split.

Разбивает входную строку на массив подстрок в позициях, определенных шаблоном регулярного выражения.

, если хотите чтобы разделить и затем напечатать только верхний регистр, вы должны также сделать совпадение

Console.WriteLine("Give input");
string input = Console.ReadLine();

string pattern = @"([A-Z]{2,})";
string[] words = Regex.Split(input, pattern);

foreach (var w in words)
 if(Regex.IsMatch(w,pattern)
  Console.WriteLine(w);

или просто использовать Regex.Matches(input,pattern);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...