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