首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解析Stylus错误消息输出

如何解析Stylus错误消息输出
EN

Stack Overflow用户
提问于 2016-06-23 13:03:42
回答 1查看 425关注 0票数 1

我正试图解析由手写笔二进制文件生成的错误消息,例如,本例中来自文档的错误

代码语言:javascript
复制
  ParseError: test.styl:3:16
    1| body
    2|    form input
    3|      == padding 5px
  ---------------------^
    4|


  illegal unary "==", missing left-hand operand

我基本上是在获取文件名、行和列,以及最后的错误消息。由于似乎没有控制输出细节的选项,所以我需要忽略以空格(后面跟着一个数字)或破折号开头的所有行。

下面是我目前拥有的内容:.*Error: (.+):(\d+):(\d+)\n(?:\W+.*\n)+(.*\n)

虽然这可能不是理想的模式,但真正的问题是,手写笔可能会输出几行额外的代码,从而破坏模式。

代码语言:javascript
复制
illegal unary "==", missing left-hand operand

    at Parser.error (/usr/local/lib/node_modules/stylus/lib/parser.js:259:11)
    at Parser.equality (/usr/local/lib/node_modules/stylus/lib/parser.js:1905:23)
    at Parser.typecheck (/usr/local/lib/node_modules/stylus/lib/parser.js:1886:21)
    at Parser.logical (/usr/local/lib/node_modules/stylus/lib/parser.js:1873:21)
    at Parser.ternary (/usr/local/lib/node_modules/stylus/lib/parser.js:1857:21)
    at Parser.negation (/usr/local/lib/node_modules/stylus/lib/parser.js:1849:17)
    at Parser.expression (/usr/local/lib/node_modules/stylus/lib/parser.js:1828:24)
    at Parser.stmt (/usr/local/lib/node_modules/stylus/lib/parser.js:818:25)
    at Parser.statement (/usr/local/lib/node_modules/stylus/lib/parser.js:685:21)
    at Parser.block (/usr/local/lib/node_modules/stylus/lib/parser.js:865:21)

上面的模式将正确捕获文件名、行和列,但始终使用错误日志中的最后一行,而不是我想要的错误消息。

如何可靠地捕获错误消息?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-23 15:46:32

利用这个特定的输出结构,您可以使用在编号代码行之后的单行(?:\n)+

那你就有:

代码语言:javascript
复制
((.*Error): (.+):(\d+):(\d+))\n(?:\ +.*\n)+(?:\n)+(.*)

解释:

代码语言:javascript
复制
# First line with matching error, file name, line, column
((.*Error): (.+):(\d+):(\d+))\n   

# Non-matching group for lines starting with whitespace and multiple characters after
(?:\ +.*\n)+                      

# Non-matching group for at least one newline
(?:\n)+                           

# Lastly, match single line at the end
(.*)                     

示例: https://regex101.com/r/uQ7dM5/1

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37992485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档