我有许多长字符串和字符串的一部分包含网址。我想在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摘要“”中的最后一个句点。
2条答案
按热度按时间tp5buhyn1#
试试这个:
tzxcd3kk2#
(?<=https?%3a%2f%2f)\w+(?=\.\w+\.\w+)
使用积极的回顾来确保它从http://
然后抓住所有的东西,向前看一看,它一定会结束.<word>.<word>
因为它使用的是lookahead/behind,所以这些组不会被捕获,而默认的捕获组就是您要寻找的答案。