如何使用Java中的正则表达式从此字符串中提取数字?

时间:2016-01-12 00:35:44

标签: java regex

输入是一个字符串:{“Id”:“490145”,“Index”:null,“Type”:“BOOK”}

如何从上面的字符串中提取数字490145?所有这些:并“混淆我。

编辑1:帖子的问题不是“如何使用现有库解码json”,而是如何专门使用正则表达式来解决问题。

编辑2:另一个问题:如何从字符串中提取“BOOK”?

1 个答案:

答案 0 :(得分:0)

java.util.regex包中可以轻松处理java中的正则表达式。您还可以在Regular expression documentation

中找到正则表达式sintax

此外,在this tutorial中你会找到一个使用这个包的例子,它基本上使用两个类:java.util.regex.Matcher和java.util.regex.Pattern;

您问题的一个可能解决方案是:

    import java.util.regex.Matcher;
    import java.util.regex.Pattern;

    public class RegExMatches {
    public static void main( String args[] ){

        // String to be scanned to find the pattern.
        String line="{\"Id\":\"490145\",\"Index\":null,\"Type\":\"BOOK\"}";
        String pattern = "(\\d+)";

        // Create a Pattern object
        Pattern r = Pattern.compile(pattern);

        // Now create matcher object.
        Matcher m = r.matcher(line);
        if (m.find( )) {
            System.out.println("Found value: " + m.group(0) );
        } else {
            System.out.println("NO MATCH");
        }
    }
    }

相反,如果你想获得每个字段的值(Id,索引和类型),模式应该由6个组组成(我假设索引由字符而不是数字组成):

String pattern = "(\"Id\":\")(\\d+)(\",\"Index\":)(\\w+)(,\"Type\":\")(\\w+)";

虽然输出是:

System.out.println("Found value for Id: " + m.group(2) );
System.out.println("Found value for Index: " + m.group(4) );
System.out.println("Found value for Type: " + m.group(6) );