Git责怪regex提取提交、行号和代码

Git责怪regex提取提交、行号和代码,regex,git,Regex,Git,我正在尝试使用正则表达式将git的输出格式化为: 沙 行号 密码 以便: f02d38023450 (PersonA 2019-08-03 13:27:04 +0200 2338) <whitespace> a7ebc6f94ab4 (PersonB 2019-11-04 12:05:07 +0100 2339) "<some code>" a7ebc6f94ab4 (PersonA 2019-11-04

我正在尝试使用正则表达式将git的输出格式化为:

沙 行号 密码 以便:

f02d38023450 (PersonA         2019-08-03 13:27:04 +0200 2338) <whitespace>
a7ebc6f94ab4 (PersonB         2019-11-04 12:05:07 +0100 2339) "<some code>"
a7ebc6f94ab4 (PersonA         2019-11-04 12:05:07 +0100 2340) <some code>       
f02d38023450 (PersonA         2019-08-03 13:27:04 +0200 2341) <whitespace>
变成:

[
  {SHA: f02d38023450, line: 2338, code: <whitespace>}
  ...
]


您可以这样做:

常量文本= ` f02d38023450人物2019-08-03 13:27:04+02002338 a7ebc6f94ab4人员B 2019-11-04 12:05:07+0100 2339 a7ebc6f94ab4人物2019-11-04 12:05:07+0100 2340 f02d38023450人物2019-08-03 13:27:04+02002341 ` 让fields=text.replace//gm,'\\'//转义双引号 fields=fields.replace/^\w+\.++\d{4}\d+\.*$/gm,{SHA:$1,行:$2,代码:$3}',//捕获组 fields=fields.slice0,fields.length-2//删除最后一个逗号 fields=`[${fields}]`//包含在数组中 让output=JSON.parsefields
console.logoutput:,output^?[0-9a-f]+\s+\s+\d{4}-\d{2}-\d{2}:\d{2}:\d{2}:\d{2}\[+-]\d{4}\s+\d{4}-\d{4}-\d{2}.$?-或者更短:^?[0-9a-f]+\s++\s++?\d++\??*$这很好用。我只是在解析时遇到了一个问题,有时代码包含双引号,导致JSON解析失败,有没有简单的解决方案?需要转义字符。我已经更新了代码片段,以便@Arin这样做