Как совпадение вывести по его номеру из Regex

169
24 февраля 2018, 18:46
page = Regex.Match(page, "/message/(.*?)\"").Groups[1].Value;

Так он дает первое совпадение. А как вывести, к примеру, второе или третье без цикла и page.NextMatch();?

Answer 1

Нужно использовать функцию Matches, которая ищет сразу все совпадения.

string pattern = @"\b\w+es\b";
Regex rgx = new Regex(pattern);
string sentence = string sentence = "Who writes these notes?";
var allMatches = rgx.Matches(sentence);
/* берём первый элемент */
Console.WriteLine(allMatches[1]); 

тестируем код тут.

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

То есть для нахождение второго и третьего первое в любом случае придётся найти, но вот 4,5,6 уже по своей сути можно не искать. В этом случае можно итерировать через NextMatch() до нахождения последнего вхождения которое вам нужно.

READ ALSO
Как убрать border у каждого второго элемента react native?

Как убрать border у каждого второго элемента react native?

Всем привет! Пишу приложение на react native и мне нужно , что бы граница с лева была через элемент , а не у каждогоКак реализовать?

192
Скрыть/показать checkbox

Скрыть/показать checkbox

Помогите,пожалуйста, есть код:

212
Сравнить время JS

Сравнить время JS

Всем привет, мне нужно сравнить текущее время с временем из определенной колонки и последней строки таблицыВот код который сейчас написан:

185
Цепные методы в JS

Цепные методы в JS

Поставлена задача: написать калькулятор, который включает в себя различные операции (+ - * / ^) с поддержкой цепных методовТак же должен учитываться...

282