正则表达式 - 在最右边的斜杠出现处拆分字符串 [Hive]
Posted
技术标签:
【中文标题】正则表达式 - 在最右边的斜杠出现处拆分字符串 [Hive]【英文标题】:Regex - Split the string on most right slash occurrence [Hive] 【发布时间】:2017-12-08 14:58:36 【问题描述】:我想根据最右边的斜杠来拆分路径字符串。文件夹深度是可变的 - 我不知道我有多少斜线。是否可以为此创建正则表达式?我在 HIVE 查询中使用它来查询 SPLIT 函数。
例如:
原始字符串
/IP/backup_jun20_2017/proddb/application_profile/mth_end_dt=2016-10-31/000000_0
拆分后:
字符串 1:
/IP/backup_jun20_2017/proddb/application_profile/mth_end_dt=2016-10-31
字符串 2:
000000_0
【问题讨论】:
【参考方案1】:尝试使用这个正则表达式(.*)\/(.*?)$
或(.*)\/([^\/]+)
匹配两组(.*)
最后一个斜线之前的第一组,最后一个斜线之后的第二组你可以像这样\/(.*?)$
或([^\/]+)
得到它
【讨论】:
它适用于 bash 正则表达式,但我需要它用于 HIVE 中的 SPLIT 函数,抱歉没有在问题中提及它。在 Hive id 中不起作用。 SPLIT 不会将字符串分割成部分。 @OlegHmelnits 我对 hive 不熟悉,但是快速搜索一下,我发现 split 不使用正则表达式也许使用它可以帮助你regexp_extract('/IP/backup_jun20_2017/proddb/application_profile/mth_end_dt=2016-10-31/000000_0', '^(.*)\/([^\/]+)', 1) as result1 regexp_extract('/IP/backup_jun20_2017/proddb/application_profile/mth_end_dt=2016-10-31/000000_0', '^(.*)\/([^\/]+)', 2) as result2
如果它有效,请告诉我?以上是关于正则表达式 - 在最右边的斜杠出现处拆分字符串 [Hive]的主要内容,如果未能解决你的问题,请参考以下文章