我试图解析一个包含~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时得到的分组。