簡體   English   中英

正則表達式從文本中提取JSON字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM