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日誌的...