Java,正则表达式捕获带空格的字符串
这是名为“response”的原始字符串:Java,正则表达式捕获带空格的字符串,java,regex,string,Java,Regex,String,这是名为“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
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));
}
当我尝试打印值时,屏幕上不会打印任何内容(无例外)正则表达式查找
“displayName”:“
作为左括号,”
作为右括号,然后提取它们之间的任何单词(\\w)
?谢谢你的帮助!
从我的正则表达式中删除了
\n
字符,这是一个格式化错误,对不起,伙计们 您应该使用这个regex
\"displayName\":\"(.*?)\"
(.*)
将0与多个字符匹配
或[更正正则表达式]
\"displayName\":\"([\w\s]+)\"
([\w\s]+)
匹配一个单词,即\w
或一个空格,即\s
1到多次,即+
Group1
现在有了数据但是为什么在正则表达式中使用\n
?这应该是\”
。您还使用了只匹配一个字符的\\w
。您需要使用一个量词。还有一个量词
因此,修改后的正则表达式如下所示:-
Pattern.compile("\"displayName\":\"(\\w+?)\""); // This won't consider space
"Joe Smith"
"Kieron Kindle"
但是,由于您的字符串
也可以包含空格,因此不应使用\\w
。它与空格不匹配
最后,您应该使用这个正则表达式,它匹配两个倒逗号之间的任何字符,除了倒逗号
本身:-
Pattern.compile("\"displayName\":\"([^\"]+)\"");
在代码中替换上述模式后,您的输出如下:-
Pattern.compile("\"displayName\":\"(\\w+?)\""); // This won't consider space
"Joe Smith"
"Kieron Kindle"
您可以在以下教程中阅读有关正则表达式的更多信息:-
您应该使用JSON解析器。@Fake.It.Til.U.Make.It,更新的问题来删除\n
@bobbyrne01(\\w)
匹配单个单词,即字母表或数字或
。您的正则表达式失败,因为\\w
将不匹配”
等四元组,*
将0或1匹配到多个times@Fake.It.Til.U.Make.It,我选择了Rohit Jain的答案,为输入干杯!非常好,谢谢!这部分做什么检查[^\“]
[]
是一个字符类。^
内部用于求反。\“
用于倒逗号(”
)。因此,该模式表示除“
以外的任何字符。当然,两个倒逗号之间的字符串不包含右倒逗号。所以,这个模式。