0

我需要在结果的开头使用正则表达式添加字符串。我的工作正则表达式是:

<img id="main-image" src="(.*?)"

他们的结果是:

/images/product/400x400/662/662544_400x400.jpg

我正在尝试使用正则表达式在结果的开头添加www.xyz.com,以便实际结果是这样的。

www.xyz.com/images/product/400x400/662/662544_400x400.jpg

为了解析正则表达式,我使用 Java UDF 和 pig

有没有办法做到这一点,请指教。

4

2 回答 2

1

如果您使用 Pig,则无需将替换合并到正则表达式中。如果您正在这样做,您也不需要编写自己的 UDF。使用内置函数REGEX_EXTRACTCONCAT

DESCRIBE A;
A: {tag: chararray}

DUMP A;
(<img id="main-image" src="/images/product/400x400/662/662544_400x400.jpg">)

B = FOREACH A GENERATE CONCAT('www.xyz.com', REGEX_EXTRACT(tag, '<img id="main-image" src="(.*?)"', 1));

DUMP B;
(www.xyz.com/images/product/400x400/662/662544_400x400.jpg)
于 2013-09-11T12:54:20.813 回答
0

这取决于语言。在 Perl 中,您需要一个替换。我在您的代码中看到 PCRE 惰性量词,所以它可能是 Perl:

s/<img id="main-image" src="(.*?)"/www.xyz.com$1/;
于 2013-09-11T07:25:52.113 回答