Я новичок в кодировании, и мне было интересно, не могли бы вы помочь мне написать какое-нибудь регулярное выражение для 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
Вместо этого вы можете использовать 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*\|')
Это синтаксис необработанной строковой константы. Вы можете просмотреть, что это значит, в документации.
@АлександраМорель-Фонтерей. . . Другое дело, что регулярные выражения BQ не имеют обратных ссылок. Я хотел взять первое регулярное выражение для примера.
Спасибо! К сожалению, это дает мне ошибку: Не удается разобрать регулярное выражение: недопустимый оператор perl: (?=