СВИНЬЯ ЛАТИНЫ 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),)

Спасибо,


person Manuel Alberto Rivera Díaz    schedule 01.04.2019    source источник
comment
Здравствуй. разделителем была запятая(,)   -  person Manuel Alberto Rivera Díaz    schedule 02.04.2019


Ответы (1)


(?<=\\#).* должен дать вам то, что вы ищете. ?‹= является положительным просмотром назад, за которым следует \, который предназначен для экранирования #. Наконец, .* будет соответствовать всему, что находится перед #

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"

введите здесь описание изображения

person VK_217    schedule 02.04.2019