gpt4 book ai didi

java - Apache Pig - 具有多个匹配条件的 MATCHES

转载 作者:可可西里 更新时间:2023-11-01 14:20:32 26 4
gpt4 key购买 nike

我正在尝试采用逻辑匹配标准,例如:

(("Foo" OR "Foo Bar" OR FooBar) AND ("test" OR "testA" OR "TestB")) OR TestZ

并将其应用为与 pig 中的文件匹配

result = filter inputfields by text matches (some regex expression here));

问题是我不知道如何将上面的逻辑表达式转换为 matches 方法的正则表达式。

我摆弄过各种各样的东西,我最接近的是这样的:

((?=.*?\bFoo\b | \bFoo Bar\b))(?=.*?\bTestZ\b)

有什么想法吗?如果可能,我还需要尝试以编程方式进行此转换。

一些例子:

a - 快速的棕色 Foo 跳过了惰性测试(这应该通过,因为它包含 foo 和测试)

b - TestZ 中发生了一些事情(这也通过了,因为它包含 testZ)

c - 快速的棕色 Foo 跳过了懒狗(这应该失败,因为它包含 Foo 但不包含 test、testA 或 TestB)

谢谢

最佳答案

因为您使用的是 Pig,所以您实际上不需要涉及正则表达式,您可以只使用 pig 提供的 boolean 运算符和几个简单的正则表达式,例如:

T = load 'matches.txt' as (str:chararray);
F = filter T by ((str matches '.*(Foo|Foo Bar|FooBar).*' and str matches '.*(test|testA|TestB).*') or str matches '.*TestZ.*');
dump F;

关于java - Apache Pig - 具有多个匹配条件的 MATCHES,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18557928/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com