例如:
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);
}