Javascript 捕获多行错误消息中的两个字符串

Javascript 捕获多行错误消息中的两个字符串,javascript,regex,javascript-objects,atom-editor,Javascript,Regex,Javascript Objects,Atom Editor,我已经创建了一个构建包,我想对其进行扩展,以捕获发生错误的文件路径和行号。我还没有找到一个有效的正则表达式模式 下面是错误消息通常的样子: Processing script file: "/Users/johndoe/Projects/test.nsi" (UTF8) Invalid command: Foo Error in script "/Users/johndoe/Projects/test.nsi" on line 5 -- aborting creation process 我只

我已经创建了一个构建包,我想对其进行扩展,以捕获发生错误的文件路径和行号。我还没有找到一个有效的正则表达式模式

下面是错误消息通常的样子:

Processing script file: "/Users/johndoe/Projects/test.nsi" (UTF8)
Invalid command: Foo
Error in script "/Users/johndoe/Projects/test.nsi" on line 5 -- aborting creation process
我只是在最后一行之后,因为之前的行数可能会有所不同,这取决于错误。我需要捕获引号和行号数字之间的文件路径(Windows和Unix)

以下是我尝试过的:

errorMatch: [
  '((.|\\n)*)Error in script "(?<file>[^"]+) on line (?<line>\\d+) -- aborting creation process'
]
errorMatch:[
“(.|\\n)*)第(?\\d+)行上的脚本“(?[^”]+”中出现错误--正在中止创建过程”
]

您可以使用以下正则表达式捕获组
\1
\2
,以获取文件路径和行号

正则表达式:
错误。*“(.*)”.*(\d+)


尝试使用捕获组来匹配所需的部件

var regex = /Error in script "(.*)" on line (\d+)/;

var match = message.match(regex);

if (match && match.length) {
  var filepath = match[1];
  var linenumber = match[2];

  console.log(filepath); // /Users/johndoe/Projects/test.nsi
  console.log(linenumber); //  5
}
jsiddle演示:


Regex101演示:

以下是我最终使用的:

const errorMatch = [
    '\\n(?<message>.+)\\nError in script "(?<file>[^"]+)" on line (?<line>\\d+) -- aborting creation process'
];
const errorMatch=[
“\\n(?.+)\\n第(?\\d+)行上的脚本“(?[^”]+)”中出现错误--正在中止创建过程”
];

这还不够。你尝试过什么?为什么还不够好?你可以尝试使用正则表达式,比如/^Error.*([^“]+)”在线(\d+)/应该这样做-但是你可以像idleberg建议的那样提供更多的信息。@Amit更新了postMy问题不是正则表达式本身,而是让它在AtomBuilder中工作