用于解析id的正则表达式

时间:2015-04-10 11:31:31

标签: java regex

我正在寻找一个正则表达式来解析MongoDB中记录的id:

{"$oid":"5527b117d3d511091e1735e2"}

我正在尝试使用以下内容,但它失败了:

 private static final Pattern p = Pattern.compile("\\{\"([a-zA-Z\\d]+)\"\\}");

 Matcher m = p.matcher("{\"$oid\":\"5527b117d3d511091e1735e2\"}");
 if(!m.find()) {
            throw new IllegalArgumentException("The id should be within parenthesis and quotes.");
 }

任何帮助?

3 个答案:

答案 0 :(得分:2)

您需要将关键部分也包含在正则表达式中,或仅"\\{\"([a-zA-Z\\d$]+)\":",因为[a-zA-Z\\d]+不匹配中间:并且没有关闭大括号紧跟在关键部分之后。

final Pattern p = Pattern.compile("\\{\"([a-zA-Z\\d$]+)\":\"([^\"]*)\"\\}");
Matcher m = p.matcher("{\"$oid\":\"5527b117d3d511091e1735e2\"}");
if(m.find())
{
    System.out.println("Key : " + m.group(1));
    System.out.println("Value : " + m.group(2));
}

<强>输出:

Key : $oid
Value : 5527b117d3d511091e1735e2

答案 1 :(得分:1)

这对我有用

    String id = str.replaceAll(".*\"(\\w+)\"}", "$1");

答案 2 :(得分:0)

使用JSON解析器:

String j = "{\"$oid\":\"5527b117d3d511091e1735e2\"}";

JSONParser p = new JSONParser();
JSONObject o = (JSONObject) p.parse(j);
System.out.println(o.get("$oid"));

输出:

5527b117d3d511091e1735e2

使用的JSON库:

    <dependency>
        <groupId>org.simpleframework</groupId>
        <artifactId>simple-xml</artifactId>
        <version>2.7.1</version>
    </dependency>