2016-04-07 7 views
0

"2015年に月例パートBスタンダードプレミアムが$ 104.90"の文字列に "Standard premium is"という文字列が見つかりましたが、私はこれをPigで行うことができません。豚パターンマッチング

私は正規表現

`PlanServiceEng = FILTER PlanService BY language == 'English' and contractid !='' and planid !='' and segmentid !='' and benefit !='' and (benefit MATCHES '.*Standard Premium is.*');` 

にしようとしていますが、私はそれが動作する正規表現以下 とちょうど「プレミアム」を見つけようとしていたとき:

PlanServiceEng = FILTER PlanService BY language == 'English' and contractid !='' and planid !='' and segmentid !='' and benefit !='' and (benefit matches '.*Premium.*'); 

答えて

0

あなたはEqualsIgnoreCase()を使用することはできません関数

EqualsIgnoreCase()関数は、2つの文字列を比較し、それらが等しいかどうかを確認するために使用されます。両方が等しい場合、この関数はブール値trueを返します。それ以外の場合はfalseを返します。

PlanServiceEng = FOREACH PlanService GENERATE (language,benefit), EqualsIgnoreCase(benefit, 'Standard Premium is'); 

または、正規表現関数REGEX_EXTRACTまたはREGEX_EXTRACT_ALLを試すことができます。

私はこれがあなたのために働く場合はここで %sあなたはそれが試合を持っていますどここの文は、別のフィールドを追加し、そのフィールドがある

b = FOREACH a GENERATE $0,$1,REGEX_EXTRACT_ALL($1,'.*%s.*') ; 

と一致するテキストだろうREGEX ..checkで何かを試してみました()。一致したデータを取得するために、フィルタを実行します。

filtered = FILTER b BY $2 is not null;