Java 使用模式和匹配器

Java 使用模式和匹配器,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+\”

我想从这个字符串中提取Failed
{“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));
    }