Избегайте регулярного выражения для захвата содержимого строки (между кавычками)

Я использую следующее регулярное выражение для захвата массива строк, который соответствует определенным условиям (например: он не начинается с какой-либо буквы или цифры, а просто содержит строки, заключенные в одинарные или двойные кавычки):

/^?[ =>]\[(('|")[^('|")\s]*('|")(, ?)?)+\]/

Он должен захватить

["bla", "ble", "blo"]

Однако он не должен фиксировать это, если он является частью строки между (одинарными или двойными) кавычками:

'["bla", "ble", "blo"]'

Что я должен добавить, чтобы избежать захвата этих нежелательных случаев?


person João Daniel    schedule 20.04.2013    source источник
comment
Является ли эта часть данных в каком-то стандартном формате, например. JSON?   -  person Ry-♦    schedule 20.04.2013


Ответы (1)


Добавьте к шаблону отрицательное выражение ретроспективного просмотра/просмотра вперед:

(?<!['])(?!['])(\[(('|")[^('|")\s]*('|")(, ?)?)+\])

У меня работало при тестировании, но это может зависеть от вашего механизма регулярных выражений.

person bitwalker    schedule 20.04.2013