【问题标题】:regex to parse fully qualified Java names in stacktraces正则表达式解析堆栈跟踪中的完全限定的 Java 名称
【发布时间】:2018-03-20 01:05:03
【问题描述】:

我为以下字符串编写了这个正则表达式(at)(\\s)(\\w.+)(\\(\\w.+)(\\))

at sun.reflect.NativeMethodAccessorImpl.invoke0(Method.java:585)

但它不起作用。你能帮我改写正确的吗?

【问题讨论】:

  • 怎么没用?你的问题没有很好的表述
  • java 类的名称中几乎可以包含任何字符(即使这是不好的做法)。

标签: java regex stack-trace


【解决方案1】:

这个正则表达式应该可以解决问题 (demo):

at (.*)\.(.*)\(([^:]*):?([\d]*)\)

将返回第 1 组中的 package.class、第 2 组中的方法、第 3 组中的文件名和第 4 组中的最终行号。

【讨论】:

    【解决方案2】:

    您需要转义像 \. 这样的句点。 \w 也匹配单个单词字符,而不是整个单词。试试这样的:

    at\s(\w+\.)+\(\w+\.\w+:\d+\)
    

    【讨论】:

    • 如果转义字符是问题,那么你应该使用\` instead of \`来转义``字符。
    • 我有一个文件,其中包含许多有关错误的信息。我想检查此错误是否具有具有模式的堆栈跟踪(在 xxx.xxx.xx 处)。我尝试编写一个正则表达式来查找文件中的匹配字符串,它可能是这样的:在 sun.reflect.NativeMethodAccessorImpl.invoke0(Method.java:585)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-10
    • 2016-10-07
    • 2018-09-26
    • 2013-08-09
    • 1970-01-01
    • 2017-04-01
    • 2011-01-03
    相关资源
    最近更新 更多