【问题标题】:Capturing errors in sublime build file using regex in Sublime Text 3在 Sublime Text 3 中使用正则表达式捕获 sublime 构建文件中的错误
【发布时间】:2016-09-19 15:36:35
【问题描述】:

我正在尝试捕获在 Sublime Text 3 中编码时遇到的错误。错误如下所示:

filename.extension:lineNumber: error: "The error message"
            Code that = is.wrong();
                          ^  <--Arrow pointing to the error

我的正则表达式捕获代码是

"result_file_regex": "^(...*?):([0-9]*): error: (.*)"

根据this 文档应该是正确的,除了没有要捕获的列号。

每当我尝试使用此正则表达式运行错误代码时,它都会错误地输出到崇高的输出

str expected, not dict

我做错了什么?

【问题讨论】:

  • 它错误的输入到底是什么?您实际上可以使用 ? ([0-9]*)?
  • 我认为不允许像 通常那样将 RegEx 用斜杠括起来
  • edit您的问题添加更多详细信息-请创建minimal reproducible example。添加示例代码(包括语言)和构建系统的内容,以便我们测试其行为。请说明打印错误的确切位置,以及是否还有其他内容。您还应该指出将"result_file_regex" 设置放在哪里。基本上,您应该允许我们完全重新创建您正在做的事情。
  • 而且@idleberg 是正确的,你的正则表达式中不应该有斜杠,除非它实际上是正则表达式的一部分。
  • @MattDMo 斜线似乎没有任何影响。删除它们会产生相同的错误。此外,Python 中也会出现同样的错误,所以我认为它与编程语言无关。

标签: regex build system sublimetext3 capture


【解决方案1】:

result_file_regex 一个 Perl 风格的正则表达式,用于从结果视图中捕获最多四个字段的错误信息,即:文件名、行号、列号和错误消息。使用模式中的组来捕获此信息。文件名字段和行号字段是必需的。

——http://docs.sublimetext.info/en/latest/reference/build_systems/configuration.html?highlight=result_file_regex

它在文档中说“result_file_regex”,但这是错误的,构建“file_regex”的关键。

我们如何匹配类似的东西:

filename.extension:lineNumber: error: "The error message"

让我们从最简单的匹配开始,文件名和行号:

"file_regex": "^([^:]+):([0-9]+):.*$"

上面匹配文件名和行号(两个匹配)。

"file_regex": "^([^:]+):([0-9]+):([0-9]+)?.*$"

以上匹配文件名、行号和可选的列号。

"file_regex": "^([^:]+):([0-9]+):([0-9]+)? error: (.+)$"

以上匹配所有四个元素:文件名、行号、列号(可选)和错误消息。

【讨论】:

  • 这太棒了!非常感谢!
猜你喜欢
  • 1970-01-01
  • 2016-05-22
  • 2014-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-17
  • 2019-11-20
相关资源
最近更新 更多