hive 中遇到的正則

2022-07-31 20:48:16 字數 1495 閱讀 7730

1、提取科室中,"科"字前面的內容

regexp_extract(t1.doctor_department_format,'(.*)科')

2、去除字串中的數字

第一種方式:

select regexp_extract('張三99','(.*?)\\d')

第二種方式:(適用於所有漢字+數字的形式)

select regexp_replace('張0三2','(\\d)','')

3、提取括號中的內容

select regexp_extract('張三(骨科)','\\((.*?)\\)')

5、未完待續。。。。。。

知識補充:

一、表示式中的引數詳情

二、hive中對於轉義的理解

轉義指的是:比如說  「.」代表的是任意乙個字元,但是假如你就要匹配「.」這樣乙個字元,那樣需要轉義,

還有,d代表乙個字母,但是為了方便,寫了乙個簡單的表示式來表示所有的數字,用轉義的小寫d來表示。

但是各個環境對轉義符有所不同,比如一般來說\代表轉義,但是hive中用\\來表示轉義,可能還有的環境用/來表示轉義

三、常用的元字元

常用元字元 **說明--------------------------------------

. 匹配除換行符以外的任意字元

\w 匹配字母或數字或下劃線

\s 匹配任意的空白符

\d 匹配數字

\b 匹配單詞的開始或結束

^ 匹配字串的開始

$ 匹配字串的結束

常用限定符 **/語法說明------------------------------

* 重複零次或更多次

+ 重複一次或更多次

? 重複零次或一次

重複n次

重複n次或更多次

重複n到m次

常用反義詞 **/語法說明----------------------------

\w 匹配任意不是字母,數字,下劃線,漢字的字元

\s 匹配任意不是空白符的字元

\d 匹配任意非數字的字元

\b 匹配不是單詞開頭或結束的位置

[^x] 匹配除了x以外的任意字元

[^aeiou] 匹配除了aeiou這幾個字母以外的任意字元

hive開發遇到的問題

問題1 問下,hive 資料通過discp 拷貝後 資料為啥查不出來,新的集群在拷貝前已建立新庫 是分割槽表 解決方法 修復下分割槽就好了 msck repair table table name 問題2 hive insert into 插入資料後表中原來的資料丟失了 是否在表名加了這種 號 如果...

hive中建立udf函式及遇到的坑

udf開發 自定義標準函式 自定義函式步驟 第一步 整合udf類,重寫evaluate方法 換為小寫字母 import org.apache.hadoop.hive.ql.exec.udf import org.apache.hadoop.io.text public class str2lower...

hive正則中3種括號的區別

小括號有兩種含義,1是原子組,2是可以將括號內的東西作為值返回 中括號代表字符集。a z 代表乙個字母,這個字母在a到z的範圍內。大括號代表重複數量,a z 代表一到二個字母,這兩個字母都在a到z的範圍內 1 小括號 匹配小括號內的字串,可以是乙個,也可以是多個,常跟 或 符號搭配使用,是多選結構的...