如果我
,我需要使用什么样的正则表达式需要在播放器列表中选择“10”而不是从组
中选择“10”{"group":"10","player":["12","15","13","10","1"]}
对不起,我应该对编程范围有更多了解
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”(如果找到)
感谢那些到目前为止回复的人
答案 0 :(得分:0)
尝试以下操作:"player":\[.*"(10)"
或"player":\[("\d+",)*?"(10)"
取决于你喜欢它的严格程度。
在MySQL中你可以使用它:
SELECT * FROM team WHERE jsondata REGEXP '"player":.*"10"'
答案 1 :(得分:0)
我知道你要求正则表达式。但是,如果字符串永远是Python字典,那么如何:
str = "{\"group\":\"10\",\"player\":[\"12\",\"15\",\"13\",\"10\",\"1\"]}"
"10" in eval( str )["player"]
这将测试"10"
键中列表是否存在字符串"player"
。您可能想要稍微不同的东西。 关键是,如果数据永远是序列化的Python数据结构,那么您将能够更自然地将这些数据用作Python数据结构。
注意,由于我手动输入字符串,我不得不逃避"
。如果您从文件中读取此字符串,则不必这样做。