java - 正则表达式获取部分异常消息

标签 java regex

在我正在开发的一个应用程序中,它在某些时候抛出验证异常,如下所示:

   com.package.server.xmlapi.exception.ValidationException:
    Validation Error #1
    key=cost.greater.than.budget
    params=[Task][TaskFee]
    description=Current cost exceeds the budget 
            at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:222)
at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:129)

我想将描述部分提取到字符串中,目前正在执行此操作:

    if (exception.contains("description")) {
        message = exception.substring(exception.lastIndexOf("=")+1);
    }

但是,如果描述后有一些附加参数(例如错误:“这是另一个错误”),这将会中断,然后它也会捕获此错误,但我只需要描述部分。描述消息可以有不同的长度,它来自另一个应用程序,我无法控制它。任何人都可以为此建议一个正则表达式吗?

最佳答案

您只需要一个技巧。说出你的意思:

description=(.*)

这将捕获您需要的文本。相关的java代码如下:

Pattern pattern = Pattern.compile("description=(.*)");
Matcher matcher = pattern.matcher(exception);
if (matcher.find()) {
    message = matcher.group(1);
}

您可以使用正则表达式 here .

关于java - 正则表达式获取部分异常消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43753286/

相关文章:

python - 正则表达式中的算术运算

java - 列表由空记录填充 - junit 测试失败

regex - 使用 RegEx 在 VBA 中分割字符串

java - AWS S3 Java SDK - 下载文件帮助

java - 套接字 () - 错误 : variable client might not have been initialized

Python正则表达式: replace a letter if it is not a part of the word in a list

javascript - 正则表达式以数字形式查找年份

sql - 允许在 postgreSQL 正则表达式文本中使用括号

java - JSP - 如何首先转发到 View ,然后在后台继续处理方法?

java - 如何使用基于 JDK 11 的 Java 应用程序使用 Java Soap Web 服务