正则表达式:查找一个组的多个外观,其中包含第二个组和边界



例如:

foo for 2019:
month value
3   101
4   202
5   303
bar for xyz

是否可以仅通过一个正则表达式规则获得所有月份和年份?

为了得到最后一个月,我会使用:/foosfors(?<year>20dd)[^]+n+s*(?<month>d+)s[^]+barsfor/gm

目标平台:节点JS

你不能用一个正则表达式匹配操作来做到这一点。您需要首先获取一个捕获组的年份,然后将包含所有月份数据的所有文本捕获到组 2 中,然后在组 2 值上运行另一个正则表达式,仅单独获取所有月份数字。

您可以使用

var text = "foo for 2019:nnmonth valuen    3   101n    4   202n    5   303nnbar for xyz";
var match = /foosfors(20dd):([^]+?)barsfor/.exec(text);
if (match) {
console.log("Year: ", match[1]);
var months = match[2].match(/d+(?=[ t]+d)/gm);
console.log("Months: ", months);
}

最新更新