gpt4 book ai didi

java - 关于简单正则表达式模式的帮助

转载 作者:太空宇宙 更新时间:2023-11-04 07:40:05 25 4
gpt4 key购买 nike

给定以下模式提取 resultCount 的正确正则表达式是什么(注意我不关心字符串中的其他任何内容):

{
"resultCount":12,
"results": [blah blah..

这是我尝试过的正则表达式..但没有骰子(即不匹配..)..

.*resultCount":([\d]+),.*

语言是java;这确实很重要(事实证明正则表达式在普通正则表达式中工作得很好)。所以我要看看是否有像引用这样的字符有问题

最佳答案

我想您正在使用Java中的String.matches函数,该函数要求整个字符串与模式匹配(这就是为什么您在模式之前和之后包含.*)。正如 Bergi 正确发现的那样,. 通常不会匹配换行符,因此如果不使用 DOTALL,就无法获得完整字符串匹配。

但这确实有点黑客行为。您实际上对匹配整个字符串并不感兴趣(这是您为验证所做的事情)。 Java 提供了第二种模式匹配方法,该方法需要更多代码,但允许您正确完成工作(查找子字符串匹配 - 如果需要,还可以查找多个子字符串匹配)。以下是一些具有固定模式的快速示例代码(假设 str 是您的输入字符串):

Pattern pattern = Pattern.compile("resultCount\":\\s*(\\d+)");

Matcher matcher = pattern.matcher(str);

while (matcher.find()) {
System.out.println(matcher.group(1));
}

PatternMatcher 都是 java.util.regex 的一部分。基于代码on this tutorial page .

Working demo.

当然,在模式中包含 \\s* 取决于您,但如果您不自己生成 JSON,这肯定会发生,而且不会造成任何损害,因为与 \\d 没有重叠。

关于java - 关于简单正则表达式模式的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16203699/

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