4

regexp_extract(input, '[0-9]*', 0) のような Apache Hive のコードに出くわしています。このコードが何をするのか説明してもらえますか? ありがとう

4

3 に答える 3

21

Hive マニュアル DDLから、パターンを使用して抽出された文字列を返します。例えばregexp_extract('foothebar', 'foo(.*?)(bar)', 2)返品bar

パラメータはキャプチャ グループで、次のindex値を取ることができる整数です。

  • 0: マッチ全体、私の例ではfoothebar
  • 1: 最初のグループ、私の例ではthe
  • 2: 2 番目のグループ、私の例ではbar
  • n: n 番目のグループ。n が正規表現で定義された実際のグループ数よりも大きい場合、Hive クエリは失敗します。

あなたの例では、数値で識別され、数値で始まるregexp_extract(input, '[0-9]*', 0)列の完全な一致を探しています。input

以下にいくつかの例を示します。

  • regexp_extract('9eleven', '[0-9]*', 0)-> 返品9
  • regexp_extract('9eleven', '[0-9]*', 1)-> クエリが失敗する
  • regexp_extract('911test', '[0-9]*', 0)-> 返品911
  • regexp_extract('911test', '[0-9]*', 1)-> クエリが失敗する
  • regexp_extract('eleven', '[0-9]*', 0)-> 空の文字列を返します
  • regexp_extract('test911', '[0-9]*', 0)-> 空の文字列を返します
于 2013-01-17T03:41:59.917 に答える
3

上記の答えは部分的に間違っています。regexp_extract('test911', '[0-9]*', 0)確かに 911 が返されます。前に文字列の開始を指定することはありません。[0-9]*

于 2013-07-01T18:02:06.067 に答える