我正在寻找一个正则表达式来解析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.");
}
任何帮助?
答案 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>