Biq Query regex_replace error (\? Vs \\?) - PullRequest
0 голосов
/ 25 апреля 2018

У меня проблемы с пониманием, что не так с этим регулярным выражением: \?.*

 select REGEXP_REPLACE(longstringcolumn, '\?.*', '') as newstring from tablename

В моем примере строка aka 'longstring' has '?'характер, и я пытаюсь сопоставить все, что тянется '?'(включая «?»).

Я проверил свое регулярное выражение в онлайн-инструментах, и мое регулярное выражение, кажется, работает.

Редактировать

Спасибо, ребята, что так быстро, Вот пример строки (это URL):

http://example.com/one/two/three?lang=en&region=CN

Я пытаюсь снять все после '?'.Итак, эта часть:

? Lang = en®ion = CN

Это ошибка, которую мне возвращают: Не удалось разобрать регулярное выражение "?": нет аргумента для оператора повторения:?

Я действительно склоняюсь к тому, что это простая проблема с escape-символом, но я не могу понять это как-то.

1 Ответ

0 голосов
/ 25 апреля 2018
#standardSQL
SELECT REGEXP_REPLACE(longstringcolumn, '\\?.*', '') AS newstring 
FROM tablename  

или

#standardSQL
SELECT REGEXP_REPLACE(longstringcolumn, r'\?.*', '') AS newstring 
FROM tablename

пример ниже

#standardSQL
WITH tablename AS (
  SELECT 'is this a question?abc ' AS longstringcolumn UNION ALL
  SELECT 'this is not a question' union all
  SELECT'http://example.com/one/two/three?lang=en&region=CN'
)
SELECT REGEXP_REPLACE(longstringcolumn, r'\?.*', '') AS newstring 
FROM tablename  

с результатом как (где? И все конечные символы удалены)

Row newstring    
1   is this a question   
2   this is not a question   

Надеждаэто показывает, что не так с вашим исходным запросом

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...