如何写这个特殊的正则表达式

时间:2012-04-11 15:15:59

标签: php mysql regex

如果我

,我需要使用什么样的正则表达式

需要在播放器列表中选择“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”(如果找到)

感谢那些到目前为止回复的人

2 个答案:

答案 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数据结构。

注意,由于我手动输入字符串,我不得不逃避"。如果您从文件中读取此字符串,则不必这样做。