0

如果我需要使用什么正则表达式

需要在玩家列表中选择“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":[]}它仍然符合条件

我想运行一个 php 命令preg_match来匹配播放器列表中的“10”(如果找到)

感谢到目前为止已经回复的人

4

2 回答 2

0

尝试这样的事情:"player":\[.*"(10)""player":\[("\d+",)*?"(10)"

取决于你喜欢它的程度。

在 MySQL 中,你可以使用这个:

SELECT * FROM team WHERE jsondata REGEXP '"player":.*"10"'
于 2012-04-11T15:26:47.280 回答
0

我知道你要求一个正则表达式。但是,如果字符串始终是 Python 字典,那么如何:

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

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

这将测试键"10"中列表的字符串是否存在。"player"你可能想要一些稍微不同的东西。关键是,如果数据始终是一个序列化的 Python 数据结构,那么您将能够更自然地作为 Python 数据结构来处理这些数据。

请注意,由于我是手动输入字符串,因此我必须将". 如果您从文件中读取此字符串,则不必这样做。

于 2012-04-11T15:27:03.480 回答