首页 > 解决方案 > 猪拉丁语 REGEX_EXTRACT:

问题描述

我正在尝试使用 regex_extract 从推文中获取 # 之后的所有内容。我正在使用这段代码,但我什么也没得到,没有错误,只是空白的地方,我应该从推文中获取摘录,我做错了什么?

grunt> a = load '/user/manuelrivera11828510/lab/pig/full_text.txt' AS (id:chararray, ts:chararray, location:chararray, lat:float, lon:float, 
tweet:chararray);

grunt> b = foreach a generate id, ts, (lat, lon) as location, REGEX_EXTRACT(tweet, '(.*)#(\\s{8})([:| ])(.*)',2) as hash;

这就是我得到的(一个例子):

(USER_8f811b71,2010-03-06T16:12:59,(40.722733,-73.5367),)

谢谢,

标签: regexapache-pigextractlatin

解决方案


(?<=\\#).*应该给你你正在寻找的东西。?<= 是积极的向后看,后跟 \ 用于转义 #.Finally .* 将匹配 # 前面的所有内容

a = load '/user/manuelrivera11828510/lab/pig/full_text.txt' AS (id:chararray, ts:chararray, location:chararray, lat:float, lon:float, tweet:chararray);
b = foreach a generate id, ts, (lat, lon) as location, REGEX_EXTRACT(tweet, '(?<=\#).*',1) as hash;`

见下文,正则表达式匹配“geteverything in fron of hash”

在此处输入图像描述


推荐阅读