Regex 构建系统正则表达式捕获

Regex 构建系统正则表达式捕获,regex,build,sublimetext3,Regex,Build,Sublimetext3,我试图在SublimiteText3中过滤构建系统的输出 首先,有人能解释一下: "file_regex": "", "line_regex": "", 我想从这个示例输出中捕获以下行: Compile success 0 Errors 0 Warnings Analysis time : 15.0 [ms] Compile success 0 Errors 0 Warnings Analysis time : 15.0 [ms] 对于正则表达式,您必须转义\[ms\],否则这意

我试图在SublimiteText3中过滤构建系统的输出

首先,有人能解释一下:

"file_regex": "",
"line_regex": "",
我想从这个示例输出中捕获以下行:

Compile success 0 Errors 0 Warnings  Analysis time :  15.0 [ms]
Compile success 0 Errors 0 Warnings  Analysis time :  15.0 [ms]


对于正则表达式,您必须转义
\[ms\]
,否则这意味着一个字符集将匹配
m
s

字符串中的两个位置(在
警告之后
时间之后:
)也有两个连续的空格,而不是1。这些可以与2个空格匹配

您可以将正则表达式更新为:

首先,有人能解释一下:

"file_regex": "",
"line_regex": "",
文件_regex
用于
sublime build
系统中,以捕获警告、错误或此类事件的位置,从而允许您直接导航到生成消息的文件中的相关位置

正则表达式应在这些行上匹配,包括一到四个正则表达式捕获,捕获以下信息:

  • 文件名
  • 行号
  • 列号
  • 消息文本
  • 捕获必须按此顺序显示,因此,例如,如果没有列号但有消息文本,则需要包含一个空的正则表达式捕获,以便消息文本上的捕获是第四个

    文件和行/列信息用于允许升华直接打开文件并将光标定位在适当的位置。文件名可以是相对路径,在这种情况下,在生成文件中设置为
    工作目录的文件夹用于确定文件的实际位置

    如果您碰巧启用了相应的功能,则消息的文本将用于诸如附加到带有幻影的文件窗口的内联错误消息之类的内容

    只有当您正在运行的工具在与包含错误的行不同的行上显示文件名时,才需要
    行\u regex

    在这种情况下,您应该提供一个包含以下捕获的
    行\u regex

  • 行号
  • 列号
  • 消息文本
  • 如果有一个
    line\u regex
    集合,并且它在一行上匹配,Sublime将在结果中查找与您提供的
    file\u regex
    匹配的第一行,从而允许它同时提取文件名

    在设置生成系统时,有时可以通过从菜单中选择
    View>Show console
    或按相关键来打开Sublime控制台

    在此输入以下命令并按enter键:

    sublime.log\u result\u regex(真)
    
    这将使Sublime能够记录到控制台上它所发现的内容,这样您就可以看到事情是否按照预期工作

    例如,给定此示例:

    int main(int argc,char const*argv[])
    {
    printf(“你好,世界!\n”);
    }
    
    使用附带的
    C++单个文件构建系统在控制台中生成以下输出:

    Running g++ "/home/tmartin/test.c" -o "/home/tmartin/test"
    found result file, line, col of [/home/tmartin/test.c], [3], [29] full path: /home/tmartin/test.c
    
    有关此主题的更多信息,请参阅以及(此处链接的是两个文档集的构建系统部分)

    我想从这个示例输出中捕获以下行:

    Compile success 0 Errors 0 Warnings  Analysis time :  15.0 [ms]
    
    Compile success 0 Errors 0 Warnings  Analysis time :  15.0 [ms]
    

    由于这些正则表达式值用于捕获实际错误和警告,因此捕获这一行没有意义,因为它不允许您在任何地方导航。

    我的正则表达式是以下atm:^Compile success[0-9]+errors[0-9]+warnings分析时间:[0-9]+\.[0-9]+[ms]我读到了。从定义上我不明白如何使用它。现在我发现SublimateText需要4个匹配项:文件名、错误行、错误列和错误消息。有时,所有信息都在一行中,因此可以使用file_regex。如果信息在多行中,可以使用line_regex将此信息添加到文件_regex.Ok中,那么我将从我的答案中删除该信息,只保留regex部分。上面声明regex应该使用一些捕获的组。