LINUX.ORG.RU

Сообщения igornet

 

Regexp для поиска значений внутри JSON

Форум — Development

Пытаюсь получить все значения лежащие в authorName из json со структурой вида:

"books": [{
	"year":1990,
	"authorName":"Ivanov",
	"country":"Russia",
	"qantity":12,
	"style":"Detective"
	},
	{
	"year":2000,
	"authorName":"Petrov",
	"country":"Russia",
	"qantity":12,
	"style":"Horror"
	},
	{
	"year":2000,
	"authorName":"Petrov",
	"country":"Russia",
	"qantity":12,
	"style":"Detective"
	}
]

Обязательные условия: 1) authorName лежит внутри books. 2) style= Detective.

Кол-во объектов в books может быть любым. Возможно ли достать значения из authorName посредством обычной регулярки? Пока мне это не удалось и на больших объемах у меня catastrophic backtracking, как я понял, нужно использовать атомарную группировку, пока что удалось достичь:

"authorName":"((?>[^"])*+)".+? - вот так выдираются все authorName, но не только из books и нет проверки на style.

"books":\[\{{1,1}.*?"authorName":"((?>[^"])*+)".+? - так ищется только первое вхождение

Подскажите пожалуйста, в какую сторону двигаться.

 , ,

igornet
()

RSS подписка на новые темы