Regexp_Extract BigQuery все до "|"

Я новичок в кодировании, и мне было интересно, не могли бы вы помочь мне написать какое-нибудь регулярное выражение для BigQuery SQL.

В основном я хотел бы извлечь все до знака полосы "|" для одной из моих колонок.

Пример:

  • Исходная строка: bla-BLABLA-cid=123456_sept1220_blabla--картофель-бла|someMore_string_stuff-IDне нужно

  • Желаемый результат: bla-BLABLA-cid=123456_sept1220_blabla--картошка-бла

Я думал об использовании функции REGEXP_EXTRACT(строка, разделитель), но я совершенно не могу написать регулярное выражение (LOL). Поэтому я просмотрел стек и нашел такие вещи, как:

SELECT REGEXP_EXTRACT( String_Name , "\S*\s*\|" ) ,
# or 
SELECT REGEXP_EXTRACT( String_Name , '.+?(?=|)')

Но каждый раз, когда я получаю сообщения об ошибках, такие как «недопустимый оператор perl: (?=» или «Недопустимый пробел»

У вас есть какие-либо предложения о том, почему я получаю эти сообщения и/или как я могу извлечь эти строки?

Заранее большое спасибо <3

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
0
354
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вместо этого вы можете использовать SPLIT:

SELECT SPLIT("bla-BLABLA-cid=123456_sept1220_blabla--potato-Blah|someMore_string_stuff-IDontNeed", "|")[OFFSET(0)]

Добавьте к строке шаблона префикс r:

SELECT REGEXP_EXTRACT(String_Name, r'\S*\s*\|')

Это синтаксис необработанной строковой константы. Вы можете просмотреть, что это значит, в документации.

Спасибо! К сожалению, это дает мне ошибку: Не удается разобрать регулярное выражение: недопустимый оператор perl: (?=

Alexandra Morel-Fonteray 09.12.2020 18:43

@АлександраМорель-Фонтерей. . . Другое дело, что регулярные выражения BQ не имеют обратных ссылок. Я хотел взять первое регулярное выражение для примера.

Gordon Linoff 09.12.2020 21:21

Другие вопросы по теме