如何使用pig提取url的第一部分

nqwrtyyt  于 2021-06-21  发布在  Pig
关注(0)|答案(2)|浏览(481)

我有许多长字符串和字符串的一部分包含网址。我想在https之后提取url的第一部分?在d.com退出之前。一些url使用http,一些使用https;例如:

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\u摘要“”中的最后一个句点。

tp5buhyn

tp5buhyn1#

试试这个:

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

tzxcd3kk2#

(?<=https?%3a%2f%2f)\w+(?=\.\w+\.\w+) 使用积极的回顾来确保它从 http:// 然后抓住所有的东西,向前看一看,它一定会结束 .<word>.<word> 因为它使用的是lookahead/behind,所以这些组不会被捕获,而默认的捕获组就是您要寻找的答案。

相关问题