首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >正则表达式使用pig提取所有内容

正则表达式使用pig提取所有内容
EN

Stack Overflow用户
提问于 2016-11-08 04:27:47
回答 1查看 141关注 0票数 0

这是我要匹配的样本数据(属性):

代码语言:javascript
运行
复制
[87027^适用年龄#619081^12-36个月,108389^国产/进口#619192^国产,108376^包装单位#619113^盒装,12210^分类#121491^牛奶粉,108385^奶源产地#619164^澳洲/新西兰,115919^配方#651827^常规配方奶粉,12212^段位#121499^3段,108380^净含量#619152^2kg以上]
[108385^奶源产地#619183^其它 ,12212^段位#121499^3段,87027^适用年龄#619081^12-36个月,108376^包装单位#619120^桶装,108389^国产/进口#619196^进口,12210^分类#121491^牛奶粉,115919^配方#651827^常规配方奶粉,12241^价格#121803^200-299元,108380^净含量#619147^800-1000g]
[87027^适用年龄#619081^12-36个月,108389^国产/进口#619192^国产,108376^包装单位#619113^盒装,12210^分类#121491^牛奶粉,108385^奶源产地#619164^澳洲/新西兰,115919^配方#651827^常规配方奶粉,12212^段位#121499^3段,108380^净含量#619152^2kg以上]

所以我尝试与数字之间的所有值进行匹配。因此,对于第一个数据行,我希望匹配介于87027和619081之间的值,以及介于619081和108389之间的值,依此类推。

到目前为止,我的代码如下:

代码语言:javascript
运行
复制
data = LOAD 'SHORT.txt' USING PigStorage() AS (number:chararray, user:chararray, item:chararray, attributes:chararray);
B = FOREACH data GENERATE REGEX_EXTRACT_ALL (attributes, '\\^(.*?)[#|,|\\]]'); 

DUMP B;

如果您还有其他需要的信息,请告诉我。谢谢!

EN

回答 1

Stack Overflow用户

发布于 2016-11-08 05:13:31

此模式捕获您所描述的内容:

代码语言:javascript
运行
复制
\d+?(\^.+?[,#\]])

示例如下:https://regex101.com/r/pOPWwY/2

看起来Hadoop需要对反斜杠进行双重转义,所以在测试上面的代码时请记住这一点。

如果要排除标记, # ],则:

代码语言:javascript
运行
复制
\d+?(\^.+?)[,#\]]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40473990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档