【问题标题】:How to extract the first part of URL out using pig如何使用 pig 提取 URL 的第一部分
【发布时间】:2016-06-27 23:22:49
【问题描述】:

我有很多长字符串,部分字符串包含 url。我想在 https 之后提取 url 的第一部分?在 abcd.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_extract '' 中的最后一个句点。

【问题讨论】:

    标签: regex apache-pig


    【解决方案1】:

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

    使用积极的后视来确保它以

    开头

    http://

    然后抓取那里的任何东西,用前瞻检查它必须以

    结尾

    .<word>.<word>

    因为它使用前瞻/后向,所以不会捕获这些组,默认捕获组就是您寻求的答案。

    【讨论】:

      【解决方案2】:

      试试这个:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-09-21
        • 2019-08-17
        • 1970-01-01
        • 2013-07-15
        • 2023-03-04
        • 2014-02-21
        • 1970-01-01
        • 2013-08-20
        相关资源
        最近更新 更多