0
Ich möchte nach der Zeichenfolge '15200' (ohne Anführungszeichen) in Tupeln suchen. Also, für die folgende Eingabe:Regulärer Ausdruck in Schwein Latein
15200
15200,4000
4000,15200
4000,15200,4025
152000
152000,4000
4000,152000
4000,152000,4025
115200
115200,4000
4000,115200
4000,115200,4025
Die Ausgabe sollte:
15200,15200
15200,4000,15200
4000,15200,15200
4000,15200,4025,15200
152000,-1
152000,4000,-1
4000,152000,-1
4000,152000,4025,-1
115200,-1
115200,4000,-1
4000,115200,-1
4000,115200,4025,-1
My Pig-Code sieht wie folgt aus:
A = LOAD '/user/test' USING PigStorage() AS (logic:chararray);
B = FOREACH A GENERATE
logic,
((logic matches '(^|,)15200($|,)')? '15200' :'-1') AS expt;
Aber wenn ich B Dump, erhalte ich:
(15200,15200)
(15200,4000,-1)
(4000,15200,-1)
(4000,15200,4025,-1)
(152000,-1)
(152000,4000,-1)
(4000,152000,-1)
(4000,152000,4025,-1)
(115200,-1)
(115200,4000,-1)
(4000,115200,-1)
(4000,115200,4025,-1)
Überraschenderweise funktioniert das:.. 'B = FOREACH A GENE Logik, ((Logik Streichhölzer‚(^ | *) 15200 ($ |, *) ')? '15200': '- 1') AS expt; ' – pasternak
Sie können Ihren Kommentar als asnwer :) – sazzad
Es ist nicht so überraschend. Es bedeutet nur, dass die Regex-Engine nach einer Übereinstimmung für die gesamte Zeichenfolge sucht, nicht nach einer beliebigen Teilzeichenfolge. In diesem Fall könnten Sie '(. *,)? 15200 (,. *)? ' –