我正在为grails编写Sublime Text 2构建配置,其中包含一个正则表达式(perl样式),用于解析文件,行,列和消息部分中的错误消息。错误来自grails CLI,格式如下:
{Project_Directory}/SourceFile.groovy: 19: errror_message @ line 19, column 5.
我当前的正则表达式匹配所有四个部分,但Sublime似乎要求匹配按顺序发生,即匹配组1 =文件名,2 =行号,3 =列号,4 =错误消息。 Grails以相反的顺序报告项目3和4,因此我需要编写一个正则表达式,将列号放在匹配组3中,错误消息放在组4中。我当前的正则表达式(匹配但不反转组3)和4)如下:
^(.+?): (\d+): (.+?) \@ line \d+, column (\d+)\.$
有什么想法吗?这甚至可能吗?有人知道sublime是否会接受命名组而不是编号组?
答案 0 :(得分:3)
^(.+?): (\d+): (?=.+? \@ line \d+, column (\d+)\.$)(.+?) \@
更好(减少失败的回溯):
^([^:]+): (\d+): (?=[^@]+ \@ line \d+, column (\d+)\.$)([^@]+) \@