Hive 查询仅替换第一次出现的子字符串
Posted
技术标签:
【中文标题】Hive 查询仅替换第一次出现的子字符串【英文标题】:Hive query to replace only the first occurrence of a substring 【发布时间】:2019-12-12 15:03:14 【问题描述】:我需要替换给定字符串中第一次出现的子字符串。
例如,如果字符串是"My name is Adam"
,我想用"@"
替换第一个"a"
。
所以我想要的输出是"My n@me is Adam"
。
在 mysql 中,有一个函数 regexp_replace
,它有一个可选参数 occurrence
来指定要替换的出现次数。但不幸的是,hive 函数中不存在该可选参数。有什么建议吗?
【问题讨论】:
【参考方案1】:hive> select regexp_replace('My name is Adam','^(.*?)a','$1@');
OK
My n@me is Adam
Time taken: 0.061 seconds, Fetched: 1 row(s)
模式'^(.*?)a'
表示:
^ - the beginning of the string
.*? - any character (.) zero or more times (*) not greedy (?)
() - remember group, we will refer it in the replacement string as $1
a - 'a' character literally
替换字符串'$1@'
表示:
$1 - group number one in the pattern (everything before 'a')
@ - '@' character literally
你可以在这里调试正则表达式:regex101.com
【讨论】:
以上是关于Hive 查询仅替换第一次出现的子字符串的主要内容,如果未能解决你的问题,请参考以下文章