猪模式匹配

时间:2016-04-07 01:13:05

标签: apache-pig

我正在尝试找到字符串"标准高级版是"在字符串" 2015年,每月B部分标准保费 $ 104.90 "但我无法在猪身上这样做。

我正在尝试使用正则表达式

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

但是当我试图找到' Premium'随着 在正则表达式下工作:

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

1 个答案:

答案 0 :(得分:0)

您无法使用EqualsIgnoreCase()功能

EqualsIgnoreCase()函数用于比较两个字符串并验证它们是否相等。如果两者相等,则此函数返回布尔值true,否则返回值false。

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

或者您可以尝试使用正则表达式函数REGEX_EXTRACT或REGEX_EXTRACT_ALL。

如果这对您有用,我尝试使用REGEX ..检查 此处%s将是您要匹配的文字

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

此语句将添加另一个匹配且该字段为()的字段。因此,为了获得匹配的数据,我们将运行一个过滤器。

filtered = FILTER b BY $2 is not null;