#regex #google-bigquery
# #регулярное выражение #google-bigquery
Вопрос:
У меня есть длинный текст, вот его часть: «размещение»: 1, «протоколы»: [2,3,5,6]}, «безопасный»: 1
И мне нужно извлечь список протоколов, так что результатом будет только [2,3,5,6].
Я использовал протоколы REGEXP_EXTRACT(text, r'»»:([^»] )’), но результат всегда разный: иногда это всего лишь [2,3,5,6], а иногда требуется больше: [2,3,5,6]},
Как создать мое РЕГУЛЯРНОЕ ВЫРАЖЕНИЕ, чтобы результатом всегда был только список в скобках?
Комментарии:
1. является ли ваш длинный текст допустимым JSON?
2. Попробуйте использовать
"protocols":([[^]] ])
3. @Pentium10 да, это json
4. Пожалуйста, используйте функции JSON, а не REGEXP, если это допустимый JSON.
Ответ №1:
Вы можете использовать
REGEXP_EXTRACT(text, r'"protocols"s*:s*([[^][] ])')
Смотрите демонстрацию регулярных выражений
Чтобы получить содержимое protocols
без скобок, переместите границы группировки немного внутрь:
REGEXP_EXTRACT(text, r'"protocols"s*:s*[([^][] )]')
Посмотрите эту демонстрацию регулярных выражений.
Подробные сведения
"protocols"
— буквальный текстs*:s*
— двоеточие, заключенное в ноль или более пробелов[
—[
символ[^][]
— один или несколько символов, отличных от[
и]
]
—]
голец.