Hive の regexp_replace 関数を使用して正規表現でグループをキャプチャし、それらのグループを置換文字列で使用する方法を誰かが理解するのを手伝ってくれるかどうか疑問に思っていました。
以下に、日付変更に関連する問題の例を示します。この例での私の目標は、SimpleDateFormat 解析と互換性のない文字列の日付を取得し、互換性を持たせるために小さな調整を行うことです。日付文字列 (以下に示す) では、文字列内のオフセット記号 (+/-) の前に「GMT」を追加する必要があります。
したがって、与えられた入力:
'2015-01-01 02:03:04 +0:00'
-or-
'2015-01-01 02:03:04 -1:00'
出力が欲しい:
'2015-01-01 02:03:04 GMT+0:00'
-or-
'2015-01-01 02:03:04 GMT-1:00'
これは、うまくいくと「思った」ステートメントの簡単な例ですが、奇妙な出力が得られます。
ハイブ クエリ:
select regexp_replace('2015-01-01 02:03:04 +0:00', ' ([+-])', ' GMT\1');
実結果:
2015-01-01 02:03:04 GMT10:00
「\1」は一致したグループを出力する必要がありますが、代わりに一致したグループを数値「1」に置き換えます。
誰かが置換文字列で一致したグループを参照/出力する正しい方法を理解するのを手伝ってくれますか?
ありがとう!