Redshift中的REGEXP_SUBSTR函数未返回期望值

尼尔

我有一个带有称为URL的列的表。我正在尝试使用REGEX_SUBSTRRedshift中的函数提取URL的不同部分

URL                                             Expected_output
------------                                 
www.abcd.com/first-name                      |   first-name
www.abcd.com/another-name/some-details/other |   another-name
www3.abcd.com/some-name/                     |   some-name
form.abcd.com/another-first-name             |   another-first-name

因此,目的是提取域名后的第一个子段

我试过了
SELECT REGEXP_SUBSTR('www.abcd.com/slug-name', '(www|www3|form)[.]abcd[.][^/]+/([^/#?]+)',1,2)

输出量
www.abcd.com/slug-name

维克多·史翠比维

由于您需要在模式中进行几个分组,第一个分组定义了预期的匹配上下文(因此,您不需要提取第一个分组的内容),并且REGEXP_SUBSTR仅支持使用e修饰符进行第一个分组的提取,因此您必须使用REGEXP_REPLACE

请注意:REGEXP_REPLACE删除匹配项,如果字符串不匹配,它将保持原样。REGEXP_SUBSTR将返回一个空白值。

因此,您可以考虑

REGEXP_REPLACE('www.abcd.com/slug-name', '^(www3?|form)\\.abcd\\.[^/]+/([^/#?]+).*', '$2')

或者,要删除“不匹配条目”文本(请注意最后|.+添加的内容):

REGEXP_REPLACE('www.abcd.com/slug-name', '^(www3?|form)\\.abcd\\.[^/]+/([^/#?]+).*|.+', '$2')

所以,^(www3?|form)\\.abcd\\.[^/]+/([^/#?]+).*比赛

  • ^ -字符串开始
  • (www3?|form)-第1组:www和一个可选3
  • \.abcd\.-.abcd.子串
  • [^/]+ -1个以上字符 /
  • /-一个/字符
  • ([^/#?]+)-第2组(经由被称为$2在替换模式反向引用):比其它1个或多个字符/#一个?
  • .* -尽可能多的0个字符

|.+说“或任何1+字符”。也就是说,如果第一个替代项没有找到匹配项,则删除整个文本。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

math.h中的函数未返回期望值

来自分类Dev

BigInteger数学函数未返回期望值

来自分类Dev

存储过程中的REGEXP_SUBSTR函数返回null

来自分类Dev

存储过程中的REGEXP_SUBSTR函数返回null

来自分类Dev

递归函数未在PHP中返回期望值

来自分类Dev

Spock存根未返回期望值

来自分类Dev

COUNTIF公式未返回期望值

来自分类Dev

Ruby命令未返回期望值

来自分类Dev

具有日期条件的SQL窗口函数未返回期望值

来自分类Dev

在一种特定情况下,函数未返回期望值

来自分类Dev

在返回游标的函数中使用regexp_substr

来自分类Dev

汇总列中的总值时,SQL查询未返回期望值

来自分类Dev

date.getTimezoneOffset()未返回期望值

来自分类Dev

Mock上的设置未返回期望值

来自分类Dev

正则表达式未返回期望值

来自分类Dev

日期时间转换未返回期望值

来自分类Dev

Hibernate搜索通配符未返回期望值

来自分类Dev

字符串数组未返回期望值

来自分类Dev

DATEDIF()未返回期望值,如何计算月龄?

来自分类Dev

oracle中的REGEXP_SUBSTR

来自分类Dev

更正此代码,以便greet函数返回期望值

来自分类Dev

Verilog在简单分配中未输出期望值

来自分类Dev

oracle中REGEXP_SUBSTR中的混乱

来自分类Dev

比较返回期望值调用函数目录,但在列表中的进程并非如此

来自分类Dev

c的除法未给出期望值

来自分类Dev

awk OFS未产生期望值

来自分类Dev

在SQL Server中替换REGEXP_SUBSTR

来自分类Dev

如何转义'[',']','|'等字符 在regexp_substr中

来自分类Dev

当最大值返回NULL时,函数不返回期望值