我是大数据领域的新手,刚刚开始学习。我在hive中有一个tweets表,在它的文本字段中,许多记录包含超链接。我想删除这些超链接,但我不能这样做。由于配置单元中不支持charindex和其他用于此目的的sql函数,即使在搜索了很多之后,我也找不到任何线索。我试着用regexp\u replace来做,但是它给了我“索引超出范围”的错误,这意味着我可能没有编写正确的regexp。这是我的疑问 SELECT text, regexp_replace (text, '(https.*)', '') FROM tweets;
任何帮助都将不胜感激。
1条答案
按热度按时间r6vfmomb1#
regexp_replace
是一种合适的方法,但是您的正则表达式将被解释为“在第一次出现https
使用空字符串”。在这种情况下,不需要括号,regexp模式需要更完整地定义要删除的url的模式,很可能是通过查找https后面的第一个空格字符。请注意,regexp在默认情况下是“贪婪的”,因此https.*
(后面有空格).*
)将查找其中最长的字符串text
以一个空格开始。通过添加一个?通配符模式,比如https.*?
. 另外,请记住,url可能不是在所有情况下都有一个空格,可能是https,也可能不是https,但肯定会包含一个//:
. 使用诸如rubular这样的站点来处理regexp,然后在查询正常工作时将其添加到查询中。最后,您可能不应该在函数so后面加空格,而不是
regexp_replace (...
做regexp_replace(...