gpt4 book ai didi

Java,正则表达式捕获带有空格的字符串

转载 作者:行者123 更新时间:2023-12-01 15:03:23 26 4
gpt4 key购买 nike

这是我原来的名为“response”的字符串:

String response = "attributes[{"displayName":"Joe Smith","fact":"super"},{"displayName":"Kieron Kindle","fact":"this is great"}]";

我正在尝试解析字符串并提取所有 id 值,例如

String[0] = Joe Smith
String[1] = Kieron Kindle

Pattern idPattern = Pattern.compile("\"displayName\":(\\w)"); // regular expression
Matcher matcher = idPattern.matcher(response);

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

当我尝试打印该值时,屏幕上没有任何内容打印(也不异常(exception))
正则表达式查找 "displayName":" 作为左括号," 作为右括号,然后提取 (\\w) 之间的任何单词他们?
感谢任何帮助!从我的正则表达式中删除了 \n 字符,这是一个格式错误,抱歉!

最佳答案

但是为什么你在正则表达式中使用 \n ?那应该是 \"。此外,您还使用了 \\w ,它只匹配一个字符。您需要使用一个量词。还有一个 不情愿的.

所以,修改后的正则表达式如下:-

Pattern.compile("\"displayName\":\"(\\w+?)\""); // This won't consider space

但是,由于您的String也可以包含空格,所以您不应该使用\\w。它不会匹配空格。

所以,最后,您应该使用这个正则表达式,它匹配两个引号之间的任何字符,除了引号本身:-

Pattern.compile("\"displayName\":\"([^\"]+)\"");

在代码中替换上述模式后,您的输出将如下所示:-

"Joe Smith"
"Kieron Kindle"
<小时/>

您可以在这些教程中阅读有关正则表达式的更多信息:-

关于Java,正则表达式捕获带有空格的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13313493/

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