配置单元-删除某些字符之间的所有内容

ltskdhd1  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(419)

我有一些路径作为字符串,我想清理,使更整洁。
字符串示例:
字符串1: /keywordOneA/keywordTwoA/393r-mr49-j5n65_9e8e77g77b8 字符串2: /keywordOneA/keywordTwoA/111-4444-jjjj_1b1b1b1b1b1b1b 字符串3: /keywordOneA/keywordTwoB/393r-mr49-j5n65_9e8e77g77b8/keywordThreeA 我希望他们屈服:
字符串1: /keywordOneA/keywordTwoA/ 字符串2: /keywordOneA/keywordTwoA/ 字符串3: /keywordOneA/keywordTwoB/keywordThreeA 基本上只要是字母之间 / ... / 然后我想保留这些关键字,否则我想删除它们。这有可能吗?
也可以使用 WITH 条款。
这就是我想出来的,但开始卡住了

select regexp_replace('/keywordonea/keywordtwob/393r-mr49 j5n65_9e8e77g77b8/keywordthreea','[0-9\/_.,!?-]','');
kzipqqlq

kzipqqlq1#

我想这会满足你的要求:

select regexp_replace(val, '/[^/]*[^a-zA-Z0-9/][^/]*', '')

我手头没有Hive,但这在甲骨文中是有效的。
此正则表达式正在查找正斜杠后面的字符。这些字符不是正斜杠,必须至少有一个是非字母数字字符。因为正则表达式在默认情况下是贪婪的,所以这将使字符与下一个正斜杠或字符串的结尾相匹配。

相关问题