[英]regular expression to extract JSON string from text
我正在尋找正則表達式從文本中提取json字符串。 我有下面的文字,其中包含
JSON string(mTitle, mPoster, mYear, mDate)
像那樣:
{"999999999":"138138138","020202020202":{"846":{"mTitle":"\u0430","mPoster":{"
small":"\/upload\/ms\/b_248.jpg","middle":"600.jpg","big":"400.jpg"},"mYear"
:"2013","mDate":"2014-01-01"},"847":{"mTitle":"\u043a","mPoster":"small":"\/upload\/ms\/241.jpg","middle":"600.jpg","big":"
138.jpg"},"mYear":"2013","mDate":"2013-12-26"},"848":{"mTitle":"\u041f","mPoster":{"small":"\/upload\/movies\/2
40.jpg","middle":"138.jpg","big":"131.jpg"},"mYear":"2013","mDate":"2013-12-19"}}}
為了解析JSON字符串,我應該從文本中提取JSON字符串。 這就是為什么,我的問題:你能幫助我從文本中只獲取JSON字符串嗎? 請幫忙。
我試過這個正則表達式沒有成功:
{"mTitle":(\w|\W)*"mDate":(\w|\W)*}
以下正則表達式應該起作用:
\{\s*"mTitle"\s*:\s*(.+?)\s*,\s*"mPoster":\s*(.+?)\s*,\s*"mYear"\s*:\s*(.+?)\s*,\s*"mDate"\s*:\s*(.+?)\s*\}
與正則表達式的主要區別在於.+?
部分,那,分解,意味着:
.
) +
) ?
) 的?
+
之后的運算符非常重要---因為如果你刪除它,第一個.+
(在\\{\\s*"mTitle"\\s*:\\s*(.+?)
)將匹配整個文本, 不是 "mPoster"
這個詞的文字,這就是你想要的。
請注意,它只是\\{"mTitle":(.+?),"mPoster":(.+?),"mYear":(.+?),"mDate":(.+?)\\}
的更復雜版本\\{"mTitle":(.+?),"mPoster":(.+?),"mYear":(.+?),"mDate":(.+?)\\}
(使用\\s*
匹配空格,JSON表示法允許)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.