08-14 14:06:02.755: W/System.err(28798): org.json.JSONException: Value jsonFlickrFeed( of type java.lang.String cannot be converted to JSONObject
08-14 14:06:02.770: W/System.err(28798): at org.json.JSON.typeMismatch(JSON.java:111)
08-14 14:06:02.770: W/System.err(28798): at org.json.JSONObject.<init>(JSONObject.java:159)
08-14 14:06:02.770: W/System.err(28798): at org.json.JSONObject.<init>(JSONObject.java:172)
08-14 14:06:02.770: W/System.err(28798): at org.example.flickrbrowser.GetFlickrJsonData.processResult(GetFlickrJsonData.java:73)
08-14 14:06:02.770: W/System.err(28798): at org.example.flickrbrowser.GetFlickrJsonData$DownloadJsonData.onPostExecute(GetFlickrJsonData.java:105)
08-14 14:06:02.770: W/System.err(28798): at org.example.flickrbrowser.GetFlickrJsonData$DownloadJsonData.onPostExecute(GetFlickrJsonData.java:101)
08-14 14:06:02.770: W/System.err(28798): at android.os.AsyncTask.finish(AsyncTask.java:632)
08-14 14:06:02.770: W/System.err(28798): at android.os.AsyncTask.access$600(AsyncTask.java:177)
08-14 14:06:02.770: W/System.err(28798): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645)
08-14 14:06:02.770: W/System.err(28798): at android.os.Handler.dispatchMessage(Handler.java:102)
08-14 14:06:02.770: W/System.err(28798): at android.os.Looper.loop(Looper.java:136)
08-14 14:06:02.770: W/System.err(28798): at android.app.ActivityThread.main(ActivityThread.java:5158)
08-14 14:06:02.770: W/System.err(28798): at java.lang.reflect.Method.invokeNative(Native Method)
08-14 14:06:02.770: W/System.err(28798): at java.lang.reflect.Method.invoke(Method.java:515)
08-14 14:06:02.770: W/System.err(28798): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:796)
08-14 14:06:02.770: W/System.err(28798): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612)
08-14 14:06:02.770: W/System.err(28798): at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:132)
08-14 14:06:02.770: W/System.err(28798): at dalvik.system.NativeStart.main(Native Method)
匹配前一个原子一次或多次,同时消耗尽可能少的输入。
我不明白这一点,有人可以帮助我吗?
答案 0 :(得分:2)
(ab)+?
会尝试匹配至少发生一次的ab
,并在找到模式后立即返回,因此懒惰。
(ab)+
会尝试匹配所有出现的ab
至少出现一次然后它会返回,因此它是贪婪。
演示:https://regex101.com/r/rC2oB9/1和https://regex101.com/r/hP7lM9/1
请注意,在第一次演示中,第一次出现ab
匹配(突出显示),而在第二次演示中,所有出现的ab都匹配(突出显示)
注意:重复捕获组只捕获最后一次迭代。如果您对数据不感兴趣,请在重复组周围放置捕获组以捕获所有迭代或使用非捕获组。
请参阅:What do lazy and greedy mean in the context of regular expressions?
答案 1 :(得分:0)
+
和?
是量词。
+
:匹配1次或更多次,?
:匹配1或0次,默认情况下,量化的子模式是“贪婪的”,也就是说,它将尽可能多地匹配(给定一个特定的起始位置),同时仍然允许模式的其余部分匹配。如果您希望它与可能的最小次数匹配,请使用“?”跟随量词 请注意,含义不会改变,只是“贪婪”:
+?
:匹配1次或更多次,而非贪婪。
有关详细信息,请参阅:Quantifiers