需求:
從字串"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 非貪婪匹配 當字元?緊隨其他限定符 之後時,匹配模式變成...