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中工作