REGEXP_REPLACE网址BIGQUERY

问题描述

我有两种类型的URL需要清除,它们看起来像这样:

["//xxx.com/se/something?SE_{ifmobile:MB}{ifnotmobile:DT}_A_B_C_D_E_F_G_H"]
["//www.xxx.com/se/car?p_color_car=White?SE_{ifmobile:MB}{ifnotmobile:DT}_A_B_C_D_E_F_G_H"]

我想要的结果是; SE_{ifmobile:MB}{ifnotmobile:DT}_A_B_C_D_E_F_G_H"


我想删除括号以及SE之前的所有内容,URL有所不同,所以我想删除

一个URL
["//xxx.com/se/something?

第二个网址:
["//www.xxx.com/se/car?p_color_car=White?


我无法理解,我已经尝试过.*\/
但是它仍然会保留我不想要的字符串,例如:
(1个网址)= something?

(2网址)car?p_color_car=White?

解决方法

您可以使用

regexp_replace(FinalUrls,r'.*\?|"\]$','')

请参见regex demo

详细信息

  • .*\?-除换行符以外的任何零个或多个字符,并尽可能多地添加?个字符
  • |-或
  • "\]$-字符串末尾的"]子字符串。

注意regexp_replace语法,您不能省略替换参数,请参见reference

REGEXP_REPLACE(value,regexp,replacement)

返回一个STRING,其中value的所有子字符串均与常规字符串匹配 表达式regexp替换为replacement

您可以在反斜杠中使用反斜杠数字(\ 1至\ 9)。 replacement参数可插入与相应内容匹配的文本 regexp模式中带括号的组。使用\ 0来指代 完整的匹配文本。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...