hive中regexp extract的有用法總結

2021-08-18 14:03:27 字數 2322 閱讀 6374

1、關於正規表示式的符號及意義

正規表示式由標準的元字元(metacharacters)所構成:

/做為轉意,即通常在"/"後面的字元不按原來意**釋,如/b/匹配字元"b",當b前面加了反斜桿後//b/,轉意為匹配乙個單詞的邊界。

-或- 

對正規表示式功能字元的還原,如"*"匹配它前面元字元0次或多次,/a*/將匹配a,aa,aaa,加了"/"後,/a/*/將只匹配"a*"。

^匹配乙個輸入或一行的開頭,/^a/匹配"an a",而不匹配"an a"

$匹配乙個輸入或一行的結尾,/a$/匹配"an a",而不匹配"an a"

*匹配前面元字元0次或多次,/ba*/將匹配b,ba,baa,baaa

+匹配前面元字元1次或多次,/ba*/將匹配ba,baa,baaa

?匹配前面元字元0次或1次,/ba*/將匹配b,ba

(x)匹配x儲存x在名為$1...$9的變數中

x|y匹配x或y

精確匹配n次

匹配n次以上

匹配n-m次

[xyz]字符集(character set),匹配這個集合中的任一乙個字元(或元字元)

[^xyz]不匹配這個集合中的任何乙個字元

[/b]匹配乙個退格符

/b匹配乙個單詞的邊界

/b匹配乙個單詞的非邊界

/cx這兒,x是乙個控制符,//cm/匹配ctrl-m

/d匹配乙個字數字元,//d/ = /[0-9]/

/d匹配乙個非字數字元,//d/ = /[^0-9]/

/n匹配乙個換行符

/r匹配乙個回車符

/s匹配乙個空白字元,包括/n,/r,/f,/t,/v等

/s匹配乙個非空白字元,等於/[^/n/f/r/t/v]/

/t匹配乙個製表符

/v匹配乙個重直製表符

/w匹配乙個可以組成單詞的字元(alphanumeric,這是我的意譯,含數字),包括下劃線,如[/w]匹配"$5.98"中的5,等於[a-za-z0-9]

/w匹配乙個不可以組成單詞的字元,如[/w]匹配"$5.98"中的$,等於[^a-za-z0-9]。

'( )' 標記乙個子表示式的開始和結束位置。

'' 標記乙個中括號表示式。

/num 匹配 num,其中 num 是乙個正整數。對所獲取的匹配的引用。

字元簇: 

[[:alpha:]] 任何字母。

[[:digit:]] 任何數字。

[[:alnum:]] 任何字母和數字。

[[:space:]] 任何白字元。

[[:upper:]] 任何大寫字母。

[[:lower:]] 任何小寫字母。

[[:punct:]] 任何標點符號。

[[:xdigit:]] 任何16進製制的數字,相當於[0-9a-fa-f]

[[:<:]],[[:>:]] 標記表示word邊界。它們分別與word的開始和結束匹配。word是一系列字字元,其前面和後面均沒有字字元。字字元是alnum類中的字母數字字元或下劃線(_)

各種操作符的運算優先順序:

/ 轉義符

(), (?:), (?=), 圓括號和方括號

*, +, ?, , , 限定符

^, $, anymetacharacter 位置和順序

2、regexp_extract函式

regexp_extract(str, regexp[, idx]) 

引數解釋:

其中:str是被解析的字串或欄位名

regexp 是正規表示式

idx是返回結果 取表示式的哪一部分  預設值為1。

0表示把整個正規表示式對應的結果全部返回

1表示返回正規表示式中第乙個() 對應的結果 以此類推 

注意點:

要注意的是idx的數字不能大於表示式中()的個數。

否則報錯:

例項:如:

1)  select regexp_extract('hitdecisiondlist','(i)(.*?)(e)',0) ;

得到的結果為:

itde

2)  select regexp_extract('hitdecisiondlist','(i)(.*?)(e)',1) ;

得到的結果為:

i3)  select regexp_extract('hitdecisiondlist','(i)(.*?)(e)',2) ;

得到的結果為:

td4)  select regexp_extract('x=a3&x=18abc&x=2&y=3&x=4','x=([0-9]+)([a-z]+)',2) from default.dual;

得到的結果為:

abc

從HIVE中中查詢

從hive資料庫查詢文件 by ymd 拼接sql語句 string sql select from doc file where contains name wildcard 拼接名稱查詢語句 if stringutils.isnoneempty unstructuredbean.getname ...

Hive 中的日誌

日誌記錄了程式執行的過程,是一種查詢問題的利器。hive中的日誌分為兩種 1.系統日誌,記錄了hive的運 況,錯誤狀況。2.job 日誌,記錄了hive 中job的執行的歷史過程。系統日誌儲存在什麼地方呢 在hive conf hive log4j.properties 檔案中記錄了hive日誌的...

Hive 中的日誌

日誌記錄了程式執行的過程,是一種查詢問題的利器。hive中的日誌分為兩種 1.系統日誌,記錄了hive的運 況,錯誤狀況。2.job 日誌,記錄了hive 中job的執行的歷史過程。系統日誌儲存在什麼地方呢 在hive conf hive log4j.properties 檔案中記錄了hive日誌的...