hive中巧用正規表示式的貪婪匹配

2021-09-01 14:32:05 字數 677 閱讀 4546

需求:

從字串"979|7.10.80|8684"中提取最後乙個豎線|後面的內容,

但是在這個字串中,豎線的個數不是固定的

使用hive中的regexp_extract函式實現如下:

select regexp_extract('979|7.10.80|8684','.*\\|(.*)',1) from t1 limit 1;  

ok

8864

由於正規表示式的貪婪匹配,一直會匹配到最後乙個豎線。

如果要取第乙個豎線前面的內容,實現如下:

select regexp_extract('979|7.10.80|8684','(.*?)\\|.*',1) from t1 limit 1;  

ok

979

貪婪匹配和非貪婪匹配的區別.*.*?

如果可以確定取以豎線分割的第n欄位,用split即可,比如,取第二個欄位7.10.80:

select split('979|7.10.80|8684','\\|')[1] from t1 limit 1;  

ok

7.10.80

hive中巧用正規表示式的貪婪匹配

貪婪匹配和非貪婪匹配的區別 和 舉例如下 從字串 888 666 544 中提取最後乙個豎線 後面的內容,但是在這個字串中,豎線的個數不是固定的。使用hive中的regexp extract函式實現如下 hive select regexp extract 888 666 544 1 ok544由於...

巧用正規表示式

現在在做人力資源管理專案,使用者提出新的需求,需要對手機號加以判斷。於是,大家都懂得,開始了探索的道路。正規表示式是對字串操作的一種邏輯公式,就是用事先定義好的而一些特定的字元 及這些特定的字元的組合,組成乙個 規則字串 這個 規則字串 用來表達對字串的一種過濾邏輯。正規表示式 功能正規表示式 驗證...

正規表示式貪婪模式

貪婪匹配與非貪婪匹配 貪婪匹配 預設情況下,正規表示式使用最長匹配原則 也叫貪婪匹配原則 例如 要將 zoom 中匹配 zo?的部 分替換成 r 替換的的結果是 rom 如果要將 zoom 中匹配 zo 的部分替換成 r 替換後的結果是 rm 非貪婪匹配 當字元?緊隨其他限定符 之後時,匹配模式變成...