2016-09-29 109 views
2
{{"name":"alpha", 
"age":"23", 
"sex":male", 
"location":"U.S" 
} 
{"name":"beta", 
"age":"23", 
"sex":male", 
"location":"Cambodia" 
}} 

如果我給一個名字,我的正則表達式應該返回該名稱的位置。 假設名字作爲一個變量,那我試試,給定字符串後的正則表達式匹配

"name":"alpha"[\d\D]*"location":"(.+?)" 

我總是最後一個位置,這種表達。我如何根據名稱獲取位置?任何幫助?

+2

唐使用正則表達式從JSON中提取數據。 – trincot

+2

[在正則表達式的上下文中什麼是懶惰和貪婪的意思?]可能的重複(http://stackoverflow.com/questions/2301285/what-do-lazy-and-greedy-mean-in-the-context-正則表達式) – revo

+0

@trincot如果只有正則表達式可用,該怎麼辦?好的,您可以編寫完整的JSON解析器,但從某些JSON數據中提取字符串有點矯枉過正。 – Mecki

回答

2

你總是得到最後一個,因爲[\d\D]*匹配中間的所有內容,而正則表達式儘量始終匹配。如果你的正則表達式引擎知道非貪婪比賽(和它看起來像它,因爲你的位置自己使用非貪婪匹配:+?),你應該能夠使用:

"name":"alpha"[\d\D]*?"location":"(.+?)"