gpt4 book ai didi

Java修复代码中的正则表达式

转载 作者:行者123 更新时间:2023-12-01 18:51:37 24 4
gpt4 key购买 nike

我需要打印@OPOK,但在以下代码中:

String s = "\"MSG1\":\"00\",\"MSG2\":\"@OPOK\",\"MSG3\":\"XXXXXX\"}";

Pattern pattern = Pattern.compile(".*\"MSG2\":\"(.+)\".*");
Matcher matcher = pattern.matcher(s);

if (matcher.find()) {
System.out.println(matcher.group(1));
} else {
System.out.println("Match not found");
}

我得到的是@OPOK","MSG3":"XXXXXX,我该如何修复我的模式?

最佳答案

您想让您的 .+ 部分不情愿。默认情况下,它是贪婪的 - 它将在不阻止模式匹配的情况下尽可能多地匹配。您希望它尽可能匹配,如下所示:

Pattern pattern = Pattern.compile(".*\"MSG2\":\"(.+?)\".*");

? 是让它不情愿的原因。请参阅Pattern文档以获取更多详细信息。

或者当然你可以匹配“双引号以外的任何字符”,这就是 Brian 的方法。据我所知,两者都同样有效;它们之间很可能存在性能差异(老实说,我希望 Brian 的性能更好),但如果性能对您很重要,您应该测试这两种方法。

关于Java修复代码中的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15711058/

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