有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

regex如何在Java中使用正则表达式从这个字符串中提取数字?

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

如何从上述字符串中提取数字490145?所有这些:和“迷惑我”

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

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


共 (1) 个答案

  1. # 1 楼答案

    java中的正则表达式可以很容易地由java处理。util。正则表达式包。您还可以在Regular expression documentation中找到正则表达式sintax

    此外,在this tutorial中,你会发现一个使用这个包的例子,它基本上使用两个类:java。util。正则表达式。Matcher和java。util。正则表达式。模式

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

        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) );