我有很多长字符串,部分字符串包含url。我想在https之后提取网址的第一部分?在abcd.com之前。有些网址使用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,移动,移动,帐户,销售,登录。
到目前为止我尝试过的是
A = LOAD DATA;
B = FOREACH A GENERATE (chararray)REGEX_EXTRACT(line, '.*&url=https?%3a%2f%2f([^\.]+)\.', 1) AS firstparturl;
DUMP B;
它给了我一个错误,抱怨regex_extract''的最后一段时间。
答案 0 :(得分:1)
(?<=https?%3a%2f%2f)\w+(?=\.\w+\.\w+)
使用正面的lookbehind确保它以
开头 http://
然后抓住那里的任何东西,用先行的方式检查它必须以
结尾 .<word>.<word>
因为它使用了前瞻/后方,所以这些组都没有被捕获,默认捕获组就是你寻求的答案。
答案 1 :(得分:0)
试试这个:
B = FOREACH A GENERATE (chararray)REGEX_EXTRACT(line, '.*&url=https?%3a%2f%2f([^.]+)\\.', 1) AS firstparturl;