【问题标题】:Parsing an error string in Lua在 Lua 中解析错误字符串
【发布时间】:2014-08-26 01:12:13
【问题描述】:

假设我有以下错误字符串:

err = "/mnt/cd4/autorun.lua:43: 'end' 预期(在第 1 行关闭 'while') 靠近'-eof-'”

如何将文件路径、行号和错误消息与字符串分开解析?

我之前没有解析 Lua 字符串的经验,所以我认为在这里询问会很有用。我也尝试找到解决相同问题的主题,但我找不到。

【问题讨论】:

    标签: error-handling lua


    【解决方案1】:

    这样的事情应该可以工作:

    err = "/mnt/cd4/autorun.lua:43: 'end' expected (to close 'while' at line 1) near '-eof-'"
    local file, line, errmsg = err:match('^(.-):(%d+):(.+)')
    print(file, line, errmsg)
    

    模式说:从行尾开始捕获 (^) 任何符号 (.) 的零个或多个 (-) 的最短组,然后是 :,然后是一组一个或多个数字 (%d+),然后是 :,然后是一组多个符号 (.+)。你可以阅读about patterns here

    【讨论】:

    • 这种模式会更正确,因为冒号可能会出现在错误消息中:'^(.-):(%d+):(.*)$'
    • Egor,正确,尽管我(还)没有看到包含:%d+: 的错误消息。更新了答案。
    猜你喜欢
    • 1970-01-01
    • 2018-12-16
    • 1970-01-01
    • 2020-01-08
    • 1970-01-01
    • 1970-01-01
    • 2013-05-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多