2012-04-11 74 views
0

什麼是我需要使用,如果我如何寫這個特殊的正則表達式

需要以球員名單從組

{"group":"10","player":["12","15","13","10","1"]} 

對不起,我選擇了「10」,而不是「10」的正則表達式應該給多一點的編程範圍

JSON字符串應該被視爲一個字符串,而不是JSON解析,因爲我需要使用MySQL查詢,選擇符合該條件的行..

例如,在上面的例子...

Select * from team Where jsondata=(Something to the effect that "10" can be found in player list but will ignore if "10" is found only in group)

如果我使用:

Select * from team Where jsondata LIKE'%"10"%' 

那顯然是錯誤的,因爲如果數據爲{"group":"10","player":[]}它仍然有資格

我想運行一個像preg_match這樣的php命令來匹配「10」表格,如果找到球員列表

感謝那些迄今已誰回答

+3

什麼語言,爲什麼你不使用JSON解析器?你有什麼嘗試? – Mat 2012-04-11 15:16:51

+2

打我吧,@Mat – Shaded 2012-04-11 15:17:16

+0

最喜歡的正則表達式測試工具:http://www.gskinner.com/RegExr/ – felickz 2012-04-11 15:26:58

回答

0

我知道你問一個正則表達式。然而,如果字符串將永遠是一個Python字典,然後怎麼樣:

str = "{\"group\":\"10\",\"player\":[\"12\",\"15\",\"13\",\"10\",\"1\"]}" 

"10" in eval(str)["player"] 

這將考驗串"10"是否存在於"player"鍵列表。你可能想要稍微不同的東西。 問題是,如果數據總是一個序列化的Python數據結構,那麼您將能夠更自然地將這些數據用作Python數據結構。

請注意,由於我手動鍵入字符串,我不得不逃脫"。如果你從文件中讀取這個字符串,你不需要這樣做。

0

嘗試somenthing這樣的:"player":\[.*"(10)""player":\[("\d+",)*?"(10)"

取決於你如何嚴格喜歡它。

在MySQL中,你可以使用這個:

SELECT * FROM team WHERE jsondata REGEXP '"player":.*"10"' 
+0

OP沒有說'10'會不會是'9'還是'123'。如果這個數字改變了......呃哦。 – 2012-04-11 15:38:21

+0

我在http://www.regextester.com/上試過你的解決方案,在那裏我粘貼你的解決方案和我的字符串作爲測試..但它突出顯示超過「10」它得到了「播放器」:[「12」,「15」 ,「13」,「10」 – user6890 2012-04-11 16:19:57

+0

@ChaseFlorell:對不起,但我無法得到你。當然,OP可以自由地將正則表達式中的'10'與他/她需要的任何數字進行交換。 – splash 2012-04-12 07:18:18