重新排序正则表达式匹配组

时间:2012-06-27 16:24:03

标签: regex perl sublimetext sublimetext2

我正在为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是否会接受命名组而不是编号组?

1 个答案:

答案 0 :(得分:3)

^(.+?): (\d+): (?=.+? \@ line \d+, column (\d+)\.$)(.+?) \@

更好(减少失败的回溯):

^([^:]+): (\d+): (?=[^@]+ \@ line \d+, column (\d+)\.$)([^@]+) \@