在我正在开发的一个应用程序中,它在某些时候抛出验证异常,如下所示:
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/