如何替换配置单元列中的特殊字符?

How to Replace special characters in hive columns?

我在 hive 中有一个需求,需要将非字母数字字符替换为 _。 列中的数据为"Pranav_Wagde_job_1163_W.Pranav Ltr-Resume 04.07.2016.pdf"

SELECT FILENAME, REGEXP_REPLACE(FILENAME,"[^0-9a-zA-Z._]", "_"), FROM HIVEDB.FILEDATA WHERE FILENAME='Pranav Wagde_job_1163_W.Pranav Ltr-Resume 04.07.2016.pdf';

输出是

Pranav_Wagde_job_1163_W.Pranav Ltr-Resume 04.07.2016.pdf

我无法替换文件名中的点。 如何替换data中除文件扩展名外的所有点?

如果支持正向前瞻,您可以添加一个替代 | 匹配所有点,但右边有 1 个以上单词字符的点除外。

(?:[^0-9a-zA-Z._]|\.(?!\w+$))

Regex demo