重新排序正则表达式匹配组(Reorder Regex Match Groups)

2019-10-16 21:42发布

我写Grails的一个崇高文本2构建配置,它包括一个正则表达式(perl的样式)中,以文件,行,列和消息部分解析错误消息。 这些错误来自于Grails的按以下格式CLI:

{Project_Directory}/SourceFile.groovy: 19: errror_message @ line 19, column 5.

我的当前正则表达式所有四个部分相匹配,但卓异似乎需要发生在顺序匹配,即匹配组1 =文件名,2 =行数,3 =列号,4 = errror消息。 Grails是报告以相反的顺序项目3和4,所以我需要写一个正则表达式,将放在比赛中的第3组的列数和错误消息中组4我现在的正则表达式(相匹配,但不会扭转组3和4)如下:

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

有任何想法吗? 这甚至可能吗? 是否有人知道崇高接受命名组而不是数目组的?

Answer 1:

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

更好地(对故障少回溯):

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


文章来源: Reorder Regex Match Groups