使用正则表达式需要在结果的开头添加字符串

时间:2013-09-11 07:21:37

标签: java regex apache-pig

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

<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

有没有办法做到这一点,请告知。

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)

这取决于语言。在Perl中,您需要替换。我在你的代码中看到了PCRE延迟量词,所以它可以是Perl:

s/<img id="main-image" src="(.*?)"/www.xyz.com$1/;