2016-06-27 2 views
-3

У меня много длинных строк, а часть строки содержит URL-адрес. Я хочу извлечь первую часть URL-адреса после https? перед выходом abcd.com. Некоторые URL-адреса используют http-использование https; Например:Как извлечь первую часть URL-адреса с помощью свиньи

long string --------&url=http%3a%2f%2fwww.abcd.com%2f------long string 
long string --------&url=https%3a%2f%2fmobile.abcd.com%2f------long string 
long string --------&url=http%3a%2f%2fmobile.abcd.com%2f------long string 
long string --------&url=https%3a%2f%2faccount.abcd.com%2f------long string 
long string --------&url=http%3a%2f%2fsale.abcd.com%2f------long string 
long string --------&url=https%3a%2f%2flogin.abcd.com%2f------long string 

Результатом будет www, mobile, mobile, account, sale, login.

То, что я пытался до сих пор

A = LOAD DATA; 
B = FOREACH A GENERATE (chararray)REGEX_EXTRACT(line, '.*&url=https?%3a%2f%2f([^\.]+)\.', 1) AS firstparturl; 
DUMP B; 

Это дает мне ошибку, жалуясь о последнем периоде в regex_extract «».

ответ

1

(?<=https?%3a%2f%2f)\w+(?=\.\w+\.\w+)

использует положительный 'назад, чтобы убедиться, что он начинается с

http://

затем захватывает все, что есть, проверка с опережающим просмотром, что она должна закончиться в

.<word>.<word>

Поскольку они используют lookahead/behind, эти группы не захвачен, а группа захвата по умолчанию - это ответ, который вы ищете.

0

Попробуйте это:

B = FOREACH A GENERATE (chararray)REGEX_EXTRACT(line, '.*&url=https?%3a%2f%2f([^.]+)\\.', 1) AS firstparturl; 
Смежные вопросы