Biq查询regex_replace错误(\?vs \\?)

时间:2018-04-25 18:49:06

标签: sql regex google-bigquery

我在理解这个正则表达式的错误时遇到了问题:\?.*

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

我的示例字符串aka' longstring'有'?'性格,我试图匹配所有尾随'?' (包括'?'本身)。

我已经在线工具检查了我的regexpr,我的正则表达式似乎正在运行。

修改

谢谢你这么快, 这是一个示例字符串(它是一个网址):

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

我试图在'之后剥离一切?'。所以这一部分:

郎= EN&安培;区域= CN

这是我正在返回的错误:无法解析正则表达式"?":重复运算符没有参数:?

我真的倾向于这是一个简单的逃避角色问题,但我无法以某种方式解决这个问题。

1 个答案:

答案 0 :(得分:3)

#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   

希望这能显示原始查询的错误