我想在元组中搜索字符串'15200'(不含引号)。因此,对于以下输入:猪拉丁语中的正则表达式
15200
15200,4000
4000,15200
4000,15200,4025
152000
152000,4000
4000,152000
4000,152000,4025
115200
115200,4000
4000,115200
4000,115200,4025
输出应该是:
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
我的猪代码如下所示:
A = LOAD '/user/test' USING PigStorage() AS (logic:chararray);
B = FOREACH A GENERATE
logic,
((logic matches '(^|,)15200($|,)')? '15200' :'-1') AS expt;
但是,当我转储B,我得到:
(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)
+0
令人惊讶地,此工作的:。 'B = FOREACH甲GENERATE 逻辑, ((逻辑匹配“(^ | *,)15200($ |,*) “)? '15200':' - 1')AS expt; ' –
+1
您可以发表您的评论作为asnwer :) –
+0
这并不令人感到意外。这只是表示正则表达式引擎正在寻找整个字符串的匹配,而不是任意的子字符串。在这种情况下,你可以使用''(。*,)?15200(,。*)?''。 –