Я хочу получить только следующие 5 слов после сопоставления моего персонажа - PullRequest
0 голосов
/ 09 апреля 2019

Я использую Regex в C #.Я хочу получить следующие 5 слов после того, как моя строка будет найдена.

Regex regex = new Regex("Born(.*){0,5}");
string result = regex.Match(UrlString).Value;

Прежде всего мне нужно найти слово "Born".Затем мне нужно получить следующие 5 слов после того, как слово "Born" было найдено.

Пример

Ввод:

Пример - родился в семье гуджарати вВаднагар, Моди помогал своему отцу продавать чай в детстве, а затем управлял собственным киоском.

Результат:

семье гуджарати в

Но я не получаю желаемого результата.

Ответы [ 2 ]

3 голосов
/ 09 апреля 2019
Regex r = new Regex("Born (?<words>([^ ]+ ){5})");
string input = "asd Born asd asd asd asd asd asd asd asd asd asd Born qwe qwe qwe qwe qwe rtz rtz rtz";

foreach (Match m in r.Matches(input))
{
    Console.WriteLine(m.Groups["words"].Value);
}

Объяснение:

(?<words>xxxxxx) // is a group which can be accessed from Matches
[^ ] // All characters except space " "
+ // one or more times
([^ ]+ ) // characters followed by a space => A word
{5} // five words
0 голосов
/ 09 апреля 2019
string result = UrlString.Substring(UrlString.IndexOf("Born"), 300);

с регулярным выражением:

string result = Regex.Match(UrlString,@"Born(.){300}").ToString())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...