我是大数据领域的新手,刚开始学习东西。
我在配置单元中有一个tweets表,在其文本字段中,许多记录包含超链接。我想删除这些超链接,但我无法做到。因为在hive中不支持用于此目的的charindex和其他sql函数,即使在搜索了很多之后我也无法找到任何线索。我尝试用regexp_replace做它,但它给我'索引超出范围'错误,这意味着我可能没有写正确的正则表达式。
这是我的查询
SELECT text, regexp_replace (text, '(https.*)', '') FROM tweets;
任何帮助将不胜感激。
答案 0 :(得分:0)
regexp_replace
是一种合适的方法,但您的正则表达式将被解释为"在第一次出现https
之后用空字符串"替换所有内容。在这种情况下,您不需要括号,并且您的正则表达式模式需要通过查找https之后的第一个空白字符来更完整地定义要删除的URL的模式。请注意,正则表达式是"贪心"默认情况下,https.*
之类的模式(.*
后面有一个空格)将在text
中查找最长的字符串。空间。通过添加?来改变这个?到通配符模式,如https.*?
。另外,请记住,URL在所有情况下可能没有空格,可能是也可能不是https,但肯定会包含//:
。使用Rubular这样的网站来处理正则表达式,然后在工作时添加到查询中。
最后,您可能不应该在功能之后放置空格,而不是regexp_replace (...
执行regexp_replace(...