Как извлечь с помощью регулярного ВЫРАЖЕНИЯ конкретную комбинацию в BigQuery

#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* — двоеточие, заключенное в ноль или более пробелов
  • [ [ символ
  • [^][] — один или несколько символов, отличных от [ и ]
  • ] ] голец.