在 Hive 中反斜杠后获取最后一个匹配值
Get last matched value after backslash in Hive
我想提取路径的最后一部分。例如,如果我的路径是:
\abc.ksiw.com\POP-K-DRIVE\project-app\cname4789A
我想要 554789A
作为输出。
我试过 regexp_extract(col, '[\w+]+$',0)
但这不起作用。有更好的方法吗?
这个有效:
regexp_extract(col,'([^\\]*)$',1)
反斜杠在 Hive 和正则表达式中都是特殊字符。
四个反斜杠用于表示正则表达式中的单个反斜杠。
如果要测试文字常量,请在文字中使用两个反斜杠,而不是在文字中使用一个反斜杠,在正则表达式中使用四个反斜杠:
select regexp_extract('\\abc.ksiw.com\POP-K-DRIVE\project-app\cname\554789A','([^\\]*)$',1);
结果:
554789A
(\w+)$
也有效:
regexp_extract(col,'(\w+)$',1)
我想提取路径的最后一部分。例如,如果我的路径是:
\abc.ksiw.com\POP-K-DRIVE\project-app\cname4789A
我想要 554789A
作为输出。
我试过 regexp_extract(col, '[\w+]+$',0)
但这不起作用。有更好的方法吗?
这个有效:
regexp_extract(col,'([^\\]*)$',1)
反斜杠在 Hive 和正则表达式中都是特殊字符。
四个反斜杠用于表示正则表达式中的单个反斜杠。
如果要测试文字常量,请在文字中使用两个反斜杠,而不是在文字中使用一个反斜杠,在正则表达式中使用四个反斜杠:
select regexp_extract('\\abc.ksiw.com\POP-K-DRIVE\project-app\cname\554789A','([^\\]*)$',1);
结果:
554789A
(\w+)$
也有效:
regexp_extract(col,'(\w+)$',1)