hive中靈活運用正規表示式處理字段

2021-09-28 21:43:38 字數 1243 閱讀 2324

hive中經常會需要處理字串,本篇文章就來聊聊如何靈活運用正規表示式來出來資料;

正規表示式中的符號介紹

^ 匹配輸入字串的開始位置。

$ 匹配輸入字串的結束位置。

[…] 字元集合。匹配所包含的任意乙個字元。例如, 『[abc]』 可以匹配 「plain」 中的 『a』。

[^…] 負值字元集合。匹配未包含的任意字元。例如, 『[^abc]』 可以匹配 「plain」 中的』p』。

p1|p2|p3 匹配 p1 或 p2 或 p3。例如,『z|food』 能匹配 「z」 或 「food」。』(z|f)ood』 則匹配 「zood」 或 「food」。

建立如下表:regexp_test(string1);

字段值如下:

string1

16857845258

13856895874

13647148565

15825487565

12453654

12306

95548

95547

4004844258

a124s14d25

sq457w451

12345@

1574@1577

[email protected]

[email protected]

010-88625458

ten123c5e7nt

首先來說說regexp的用法:

如果想要找出表中的手機號碼、郵箱、**號碼,這時候我們用like就基本很難實現了,like欠缺的是數字匹配、字元匹配還有字元長度的問題,當然你可以用無數個_來標識個數,但是很困難也很容易出錯,這時用正則可以很簡單的匹配這些;

手機號碼:第一位數為1,第二位為3/5/8,之後九位就是隨意排布了,正規表示式為:』^1[358][0-9]』;

select string1

from regexp_test

where string1 regexp 『^1[3|5|8][1-9]』

結果:序號 string1

1 13856895874

2 13647148565

3 15825487565

regexp_replace函式:

把字串中的數字全部換成空值:

select string1,regexp_replace(string1,』[1-9]』,』』)

from regexp_test;

結果:日常中字元的處理掌握正則以後就將變得很簡單了。

中運用正規表示式

看到大家討論這方面的東西,作點貢獻聊表各位高手對這個版快的無私奉獻 oops 如果使用者熟悉linux下的sed awk grep或vi,那麼對正規表示式這一概念肯定不會陌生。由於它可以極大地簡化處理字串時的複雜度,因此現在已經在許多linux實用工具中得到了應用。千萬不要以為正規表示式只是perl...

正規表示式整理處

size large color red b 一 判斷輸入是否都是空格 b color size 去除所有空格 str str.replace s g,去除兩頭空格 str str.replace s s g,var var1 document.getelementbyid name 這是正則,s匹...

正規表示式簡單運用

在學習中呢,剛認識到正則的一些用處,好處,那麼在這裡就講講正規表示式的一些簡單運用。我希望能讓你們了解到什麼是正規表示式,同時能讓自己加深對正規表示式的理解。第一次看到正規表示式的時候呢,根本看不懂這是什麼。就例如 nkeyup value value.replace u4e00 u9fa5 g,o...