我有這個很長的JSON字符串。我想濾除它,只能得到第一個括號之間的數據。問題是,我有很多其他括號,因此我的正則表達式模式無法正常工作。多個括號之間的匹配字符串
這裏是JSON字符串:
String jsondata = "["
+"{"
+ "test: 63453645"
+"date: 2016-07-17"
"{"
+ "id:534534"
+"}"
+ "blank : null"
+ "flags : null"
+ "}"
+"{"
+ "test: 543564236"
+"date: 2014-07-17"
+"{"
+ "id:6532465"
+"}"
+ "blank : null"
+ "flags : null"
+ "}"
+"]";
pattern = "\\{[^{}]*\\}";
pr = Pattern.compile(pattern);
math = pr.matcher(jsondata);
if (math.find()) {
System.out.println(math.group());
}
else
System.out.println("nomatch");
與我有是,它只有id:
後打印出的第一}
模式的問題,但我想它在最後}
一端在flags之後:null。
而我只想打印第一個匹配,即不是後面的字符串,因爲也是以相同的字符開始和結束,這就是爲什麼我有if語句而不是while循環。
有什麼建議嗎?謝謝!
帶有多個括號的正則表達式似乎是一項非常困難的任務。我可以匹配最後一個字符串嗎?從{
開始到flags : null
?
不幸的是你不能用正則表達式處理java中的嵌套括號。使用json解析器。 –
我通常使用[JSON-Simple](https://code.google.com/p/json-simple/)。 一個很棒的教程,[解碼](https://code.google.com/p/json-simple/wiki/DecodingExamples)。 –
此外,這是無效的Java代碼,如果是,jsondata將是無效的JSON。 –