4

我有一堆具有各种前缀的字符串,包括“未知:”我真的很想在我的 Pig 脚本中过滤掉所有以“未知:”开头的字符串,但它似乎不起作用。

simpleFilter = FILTER records BY NOT(mystr MATCHES '^unknown');

我已经尝试了一些其他的正则表达式排列,但似乎它MATCHES不能很好地与 NOT 一起使用。我错过了什么吗?

使用猪 0.9.2

4

1 回答 1

19

这是因为matches运算符的操作与Java 完全一样String#matches,即它尝试匹配整个 String 而不仅仅是它的一部分(在您的情况下为前缀)。只需更新您的正则表达式以将整个字符串与您指定的前缀匹配,如下所示:

simpleFilter = FILTER records BY NOT(mystr MATCHES '^unknown.*');
于 2013-05-23T23:38:18.957 回答