Захват только ближайшего матча, прежде чем заглянуть в будущее - PullRequest
0 голосов
/ 17 февраля 2019

У меня есть куча данных списка воспроизведения в формате JSON в виде строки.Он очень большой, и я много работаю с ним, поэтому я пытаюсь извлечь из него информацию в виде строки, а не превращать ее в объект JavaScript.

Я пытаюсь получитьИмя списка воспроизведения каждого списка воспроизведения, который содержит название песни.Например, я пытаюсь получить playlist 1 и playlist 3 следующей строки, если я ищу song 1:

{"playlist 1":["song 3","song 1"],"playlist 2":["song 2"],"playlist 3":["song 1"]}

. Для этого я использую следующее регулярное выражение:

"([^"]*?)":(?=.*song 1)

, но это захват всех имен плейлистов до song 1, а не только самого непосредственного имени плейлиста до song 1.

Как я могу толькозахватить ближайший к впереди взгляд вперед?Я попытался использовать отрицательный взгляд вперед для этого, но не смог заставить его работать.

https://regex101.com/r/gW2cL1/15

1 Ответ

0 голосов
/ 17 февраля 2019

Просто замените (?=.*song 1) в вашем регулярном выражении на (?=[^\]]+song 1), и все сказано.

"([^"]*?)":(?=[^\]]+song 1)

DEMO

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...