Java 使用模式和匹配器
我想从这个字符串中提取FailedJava 使用模式和匹配器,java,regex,Java,Regex,我想从这个字符串中提取Failed{“Login”:“Failed”}如何设置模式?你也能解释一下吗。我提到了,但不明白他们所说的设定模式是什么意思。这是我尝试的失败: Pattern pattern = Pattern.compile(":"); Matcher matcher = pattern.matcher(login); if (matcher.find()) { System.out.println(matcher.group(1)); } 使用此模式:\“(\\w+\”
{“Login”:“Failed”}
如何设置模式?你也能解释一下吗。我提到了,但不明白他们所说的设定模式是什么意思。这是我尝试的失败:
Pattern pattern = Pattern.compile(":");
Matcher matcher = pattern.matcher(login);
if (matcher.find()) {
System.out.println(matcher.group(1));
}
使用此模式:\“(\\w+\”
你喜欢这样吗
public static void main(String args[]){
String login="{\"Login\":\"Failed\"}";
Pattern pattern = Pattern.compile(":\"(\\w+)\"");
Matcher matcher = pattern.matcher(login);
if (matcher.find()) {
System.out.println(matcher.group(1));
}
正则表达式中没有组,组是括号中的表达式。这个任务也可以用replaceAll解决
s = s.replaceAll(".+:\"(.+)\"}", "$1");
您的字符串是JSON格式的。RegExp的另一种方法是将其解析为JSON,然后从JsonObject获取属性“Login”
推荐的库:Google GSON。从阅读您尝试使用的类的javadoc开始。
String line="{\"Login\":\"Failed\"};
Pattern pattern = Pattern.compile("Failed");
Matcher matcher = pattern.matcher(line);
if (matcher.find()) {
System.out.println(matcher.group(0));
}
or you can also use
String line="{\"Login\":\"Failed\"};
Pattern pattern = Pattern.compile(":\"(\\w+)\"");
Matcher matcher = pattern.matcher(line);
if (matcher.find()) {
System.out.println(matcher.group(1));
}