Regex, чтобы найти слова с определенным характером - PullRequest
0 голосов
/ 27 мая 2019

Как найти все слова, содержащие в себе определенную букву?

Например, если моя строка

This is a Station called South Yarra

тогда я хочу извлечь все слова с буквой «а» в них. Матчи будут

"a", "Station", "called", "Yarra"

Пока я пробовал

Regex regex = new Regex(@"\w[a]\w");

Regex regex = new Regex(@"\s[a*]\s");

Ответы [ 3 ]

1 голос
/ 27 мая 2019

Решение без регулярных выражений с использованием Linq:

List<string> arr = s.Split(' ').Where(x => x.Contains('a')).ToList();

string.Split(' '): возвращает массив строк, который содержит в этом случае подстроки, разделенные символом ''

Enumerable.Where(predicate): последовательность фильтров на основе предиката

Enumerable.Contains(): определяет, содержит ли последовательность указанный элемент

POC: .net Fiddle

1 голос
/ 27 мая 2019

В зависимости от того, как вы хотите обрабатывать знаки препинания, такие как переносы слов, рассмотрите возможность использования только \w*a\w*.

К вашему сведению: \w соответствует символу word .

1 голос
/ 27 мая 2019

Попробуйте с регулярным выражением ниже

Regex regex = new Regex(@"[^\s]*[a][^\s]*");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...