hiveの正規表現の使用を1回記録する

1141 ワード

先着コード
select userid as cuserid,
                 regexp_extract(trackurl,'\"slot=([^\"]+)\"',1) as tjfrom1,
                 regexp_extract(trackurl,'\"tjfrom=([^\"]+)\"',1) as tjfrom2,
                 regexp_extract(trackurl,'\"infoid=([^\"]+)\"',1) as infoid,
          from xxx.app_action
          where dt = '20200528'
         limit 100;

解析:構文:regexp_extract(string subject,string pattern,int index)は、まず「slot=」と一致し、その後に「最初から最後にもう一つ」と一致する、index=1最初の括弧内の内容であるslot=後のvalue値はstringを返し、tjfrom 1戻り値と命名した:string説明:文字列subjectをpattern正規表現の規則に従って分割し、index指定の文字を返します.第1のパラメータ:処理するフィールドの第2のパラメータ:一致する正規表現が必要な第3のパラメータ:0は一致する文字全体を表示します文字列1は、1番目の括弧の内側を表示します(デフォルトは1)2は、2番目の括弧の内側を表示します...(indexの数は括弧の数より大きくないことに注意してください)注意:エスケープ文字の二重スラッシュ''を使用する場合があります
例:select regexp_extract(‘x=a 3&x=18 abc&x=2&y=3&x=4’,‘x=([0-9]+)([a-z]+)’,2)from default.dual;結果:abc,ここでindexは3を書くと括弧の数より多いためエラーが報告される.解析を実行する:まず「x=」,次に「0-9」をマッチングし,「+」は前のサブエクスプレッションを1回または複数回マッチングし,最後に「a-z」,「+「前に一致するサブエクスプレッションを1回または複数回表し、2番目の括弧の内容である数字の後に続くアルファベットを出力する.