正则表达式从文本中提取JSON字符串

isa*_*jan 6 regex json expression

我正在寻找正则表达式从文本中提取json字符串.我有下面的文字,其中包含

JSON string(mTitle, mPoster, mYear, mDate)
Run Code Online (Sandbox Code Playgroud)

像那样:

{"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"}}}
Run Code Online (Sandbox Code Playgroud)

为了解析JSON字符串,我应该从文本中提取JSON字符串.这就是为什么,我的问题:你能帮助我从文本中只获取JSON字符串吗?请帮忙.

我试过这个正则表达式没有成功:

{"mTitle":(\w|\W)*"mDate":(\w|\W)*}
Run Code Online (Sandbox Code Playgroud)

acd*_*ior 8

以下正则表达式应该起作用:

\{\s*"mTitle"\s*:\s*(.+?)\s*,\s*"mPoster":\s*(.+?)\s*,\s*"mYear"\s*:\s*(.+?)\s*,\s*"mDate"\s*:\s*(.+?)\s*\}
Run Code Online (Sandbox Code Playgroud)

在这里查看演示.

与正则表达式的主要区别.+?在于,分解,表示:

  • 匹配任何字符(.)
  • 一次或多次(+)
  • 尽可能少(?)

?之后的操作+是非常重要的---在这里,因为如果你删除它,第一个.+(在\{\s*"mTitle"\s*:\s*(.+?))将匹配整个文本,没有文本到"mPoster"的话,那就是你想要的.

请注意,它只是一个更复杂的版本\{"mTitle":(.+?),"mPoster":(.+?),"mYear":(.+?),"mDate":(.+?)\}(\s*用于匹配空格,JSON表示法允许).