gpt4 book ai didi

java - 如何使用 Java 中的正则表达式提取该字符串?

转载 作者:行者123 更新时间:2023-12-02 15:38:25 25 4
gpt4 key购买 nike

errorString="AxisFault\n
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.generalException\n
faultSubcode: \n
faultString: My Error\n
faultActor: \n
faultNode: \n
faultDetail: \n
{}string: this is the fault detail"


Pattern pattern = Pattern.compile(".*faultString(.*)", Pattern.DOTALL);
Matcher matcher = pattern.matcher(errorString);
if (matcher.matches()) {
String match = matcher.group(1);
return match;
}

我想得到“My Error”,但它返回到整个字符串的末尾,而不是匹配到faultString行末尾的\n。我尝试了很多技术让它停在行尾,但没有成功。

谢谢

最佳答案

你不应该通过Pattern.DOTALL ;这会导致换行符与 .* 匹配,这正是您不想要的情况。

更好的正则表达式是:

Pattern pattern = Pattern.compile("faultString: (.*)");

然后,使用 find() 而不是 matcher.matches()查看它是否出现在字符串中的任何位置。

另请注意,我已修改正则表达式以仅对“我的错误”部分进行分组,而不是像您原来的那样对“:我的错误”进行分组。

需要明确的是,这是我测试的代码:

Pattern pattern = Pattern.compile("faultString: (.*)");
Matcher matcher = pattern.matcher(errorString);
if (matcher.find()) {
System.out.println(matcher.group(1));
}

其中 errorString 与您的相同。
输出为:

My Error

关于java - 如何使用 Java 中的正则表达式提取该字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/870127/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com