慢慢地在Javascript中循环遍历regex.exec

时间:2017-01-18 18:20:03

标签: javascript regex while-loop

我试图解析一个包含~330k STEP行的14Mb文件,看起来像这样: #328489=IFCCOMPOSITECURVESEGMENT(.CONTINUOUS.,.F.,#328487);

let regex = /#(\d+)\s*=\s*([a-zA-Z0-9]+)\s*\(([\s\S]*?)\);/g;
let match;
let res1;
let res2;
let res3;

while(match !== null) {
  match = regex.exec(data);

  res1 = match[1];
  res2 = match[2];
  res3 = match[3];
}

我的问题是,这非常慢!解析文件需要永远(可能每秒200行)。这是一个小文件!它们可以超过100Mb并包含数百万行。

为什么这么慢?如果我将indata字符串化并改为使用匹配:let result = data.toString().match(regex);它只需要几毫秒。但我真的希望能够保持我在使用exec时得到的分组。

0 个答案:

没有答案