正则表达式 - 在最右边的斜杠出现处拆分字符串 [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]的主要内容,如果未能解决你的问题,请参考以下文章

用于在所有空格处拆分的正则表达式 Python [重复]

正则表达式在第二个逗号处拆分

正则表达式:向后看以避免奇数个连续的反斜杠

R 使用 tidyr::separate 在最后一个空格字符处拆分字符串

正则表达式[!^0-9] 是啥意思?

如何在第一个`/`(斜杠)处拆分字符串并在`<span>`中包围它的一部分?