RegEx: найти несколько появлений одной группы в RegEx со второй группой и границами - PullRequest
1 голос
/ 16 октября 2019

Например:

foo for 2019:

month value
    3   101
    4   202
    5   303

bar for xyz

Можно ли получить все месяцы и год только по одному правилу регулярных выражений?

Чтобы получить последний месяц, я бы использовал: /foo\sfor\s(?<year>20\d\d)[^]+\n+\s*(?<month>\d+)\s[^]+bar\sfor/gm

Целевая платформа: nodeJS

1 Ответ

1 голос
/ 16 октября 2019

Вы не можете сделать это с помощью одной операции сопоставления с регулярным выражением. Сначала необходимо получить год с одной группой захвата, а затем захватить весь текст со всеми данными за месяц в Группе 2, а затем выполнить другое регулярное выражение для значения Группы 2 только для того, чтобы получить все номера месяцев отдельно.

Вы можетеиспользовать

var text = "foo for 2019:\n\nmonth value\n    3   101\n    4   202\n    5   303\n\nbar for xyz";
var match = /foo\sfor\s(20\d\d):([^]+?)bar\sfor/.exec(text);
if (match) {
    console.log("Year: ", match[1]);
    var months = match[2].match(/\d+(?=[ \t]+\d)/gm);
    console.log("Months: ", months);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...