1. 程式人生 > >hive正則表示式

hive正則表示式

hive中實現正則表示式,與java中的正則表示式有所區別:

這裡經過探索總結了一些:

hive中的正則可以用,但是有所區別,區別在於原來的‘\’ 轉義,這裡變成了雙斜槓了‘\\’

hive中的正則解析函式:regexp_extract;    例如:‘匹配 10.122.248’

select regexp_extract(host,'(^[\\w]+)\\.([\\w]+)\\.([\\w]+)',0) aa from browsewebpagelog where dt like '20140630%';

第一引數:要處理的欄位,第二引數需要匹配的正則表示式,第三個引數:0是顯示與之匹配的整個字串,1,是顯示第一個括號裡面的,2是顯示第二個括號裡面的欄位...

語法: regexp_extract(string subject, string pattern, int index)

返回值: string

說明:將字串subject按照pattern正則表示式的規則拆分,返回index指定的字元。注意,在有些情況下要使用轉義字元

舉例:

hive> select regexp_extract(‘foothebar’, ‘foo(.*?)(bar)’, 1) from dual;

the

hive> select regexp_extract(‘foothebar’, ‘foo(.*?)(bar)’, 2) from dual;

bar

hive> select regexp_extract(‘foothebar’, ‘foo(.*?)(bar)’, 0) from dual;

foothebar

注:有些部落格上用 rlike匹配正則,我試過它的含義是隻要出現你所制定的正則時,都給你匹配上,你必須新增開始‘^’的符號,否則匹配的結果絕對不是所期望的。