如何在 Pig 中创建不区分大小写的匹配?
Posted
技术标签:
【中文标题】如何在 Pig 中创建不区分大小写的匹配?【英文标题】:How do I create a case insensitive match in Pig? 【发布时间】:2015-02-25 18:37:34 【问题描述】:假设我有以下文件,学生们
John
Mary
Bill
Joe
然后我按如下方式加载我的数据:
a = load 'student' as (name:chararray);
我希望 b 的结果不区分大小写:
b = filter a by name matches ('.*john.*');
即返回一个匹配项,(John)。我尝试使用'?i.*john.*'
设置正则表达式的模式,但这似乎不起作用。
【问题讨论】:
LOWER(Name) 匹配怎么样...? 是的,LOWER(name) 或 UPPER(name) 然后去匹配 【参考方案1】:原因是您忘记关闭不区分大小写部分的括号。
正确的语法是'(?i).*john.*'
你可以试试这个过滤器 stmt 吗?
b = filter a by name matches '(?i).*john.*';
【讨论】:
【参考方案2】:我知道这是一种丑陋的做法,但你可以试试这个 -
.*[Jj][Oo][Hh][Nn].*
【讨论】:
以上是关于如何在 Pig 中创建不区分大小写的匹配?的主要内容,如果未能解决你的问题,请参考以下文章