1
に動作しません。 私は豚に正規表現を適用しようとしているが、それはREGEX_EXTRACT私は初め、各フィールドの終わりから二重引用符を「"」削除したい
入力を動作しないようですよ:
(main_170521230001.csv,"9","2017-05-21 23:00:01.472636")
(main_170521230001.csv,"91","2017-05-21 23:00:01.472636")
(main_170521230001.csv,"592","2017-05-21 23:00:01.472636")
豚スクリプト:
raw = LOAD '/data/csv' using PigStorage(',','-tagFile') as (
fn:chararray,
gid:chararray,
createdts:chararray);
res = foreach raw generate
REGEX_EXTRACT(fn, '([^"](.*)[^"])',1) as (fn:chararray),
REGEX_EXTRACT(gid, '([^"](.*)[^"])',1) as (gid:chararray),
REGEX_EXTRACT(createdts, '([^"](.*)[^"])',1) as (createdts:chararray);
dump res;
出力:
(ain_170521230001.cs,,017-05-21 23:00:01.47263)
(ain_170521230001.cs,91,017-05-21 23:00:01.47263)
(ain_170521230001.cs,592,017-05-21 23:00:01.47263)
私は予想:
(main_170521230001.csv,9,2017-05-21 23:00:01.472636)
(main_170521230001.csv,91,2017-05-21 23:00:01.472636)
(main_170521230001.csv,592,2017-05-21 23:00:01.472636)
は、私は "" との間のすべての文字を受信したいです。 例:
"abc" -> abc
abc -> abc
""abc""" -> abc
"a"b"c" -> a"b"c
厥なぜ私はこのパターンを使用しています:
'([^"](.*)[^"])'
をそれが一つの場合を除いて、正常に動作します - 二重引用符の間に単一の文字がある場合、このパターンは、空の文字列 理由を返します。それはそうなるのですか?
REPLACEを試しましたか? – philantrovert