"?artistName"?\s*:\s*"([^"]*)("|$)
должен сделать свое дело.Он даже обрабатывает некоторые изменения в строке:
- Пробел до и после
:
artistName
с кавычками и без - отсутствует
"
в конце имени исполнителя, если это последняя вещь в строке
Но будет много других вариантов ввода, с которыми вы можете столкнуться, что это регулярное выражение не будет соответствовать.
Кроме того, вы не хотите использовать регулярное выражение для сопоставления этого по соображениям производительности.Сейчас вас может заинтересовать только поле artistName
.Но через некоторое время вам понадобится информация из других полей.Если вы просто измените имя поля в регулярном выражении, вам придется снова сопоставить всю строку.Гораздо лучше использовать синтаксический анализатор и преобразовать всю строку в словарь, где вы можете легко получить доступ к различным полям.Разбор всей строки не должен занимать намного больше времени, чем сопоставление последней пары ключ / значение с использованием регулярного выражения.
Это похоже на какой-то JSON, есть много хороших и полных анализаторов.Это не трудно написать сам, хотя.Вы можете написать простой парсер рекурсивного спуска за пару часов.Я думаю, что это то, что каждый программист должен был сделать хотя бы один раз.