我是regexp_extract的新手,需要拆分/上的列,然后选择第三个值。例如,来自

application/motorola products/routers

想要得到routers。如果没有第三个值,那么我们需要回退到第二个值,即motorola products。我尝试了以下正则表达式模式,但不起作用:
(.*?\/)(.*?\/)(.*?)(\/.*\/)

最佳答案

您是说单个字符是可选的。给.一个quantifier *+。我认为这个正则表达式实际上会更好:

(?:([^\/]+?\/)([^\/]+?)\/([^\/]*)|([^\/]+?\/)([^\/]+))

演示:https://regex101.com/r/dX6uQ9/2

我尚未使用/没有hive,因此无法确认是否可以使用,但是我认为这应该使您走得更近。

08-05 09:41