hive查询只替换子字符串的第一个匹配项

bzzcjhmw  于 2021-06-24  发布在  Hive
关注(0)|答案(1)|浏览(672)

我需要替换给定字符串中第一个出现的子字符串。
如果绳子断了 "My name is Adam" 我想替换第一个 "a""@" .
所以我想要的结果是 "My n@me is Adam" .
在mysql中,有一个函数 regexp_replace 它有一个可选参数 occurrence 指定要替换的引用数。但不幸的是,该可选参数在配置单元函数中不存在。有什么建议吗?

zengzsys

zengzsys1#

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

您可以在这里调试regexp:regex101.com

相关问题