貪婪匹配和非貪婪匹配的區別
.*和
.*?舉例如下:
從字串"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 非貪婪匹配 當字元?緊隨其他限定符 之後時,匹配模式變成...