c语言拉丁猪的代码,猪拉丁语中的正则表达式

我想在元组中搜索字符串'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(,。*)?''。 –

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值