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

2021-08-15 17:53:28 字數 751 閱讀 8454

貪婪匹配和非貪婪匹配的區別 

.*和 

.*?舉例如下:

從字串"888|666|544"中提取最後乙個豎線|後面的內容,

但是在這個字串中,

豎線的個數不是固定的

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

hive> select regexp_extract('888|666|544','.*\\|(.*)',1);

ok544

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

非貪婪模式  

.*? 

結果如下:

hive> select regexp_extract('888|666|544','.*?\\|(.*)',1);

ok666|544

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

hive> select regexp_extract('888|666|544','(.*?)\\|.*',1);

ok888

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

sql**

hive> select split('888|666|544','\\|')[1];

ok666

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

需求 從字串 979 7.10.80 8684 中提取最後乙個豎線 後面的內容,但是在這個字串中,豎線的個數不是固定的。使用hive中的regexp extract函式實現如下 select regexp extract 979 7.10.80 8684 1 from t1 limit 1 ok 8...

巧用正規表示式

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

正規表示式貪婪模式

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