我需要在结果开头使用正则表达式添加字符串。我正在使用的正则表达式是:
<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
有没有办法做到这一点,请告知。
答案 0 :(得分:1)
如果您正在使用Pig,则无需将替换合并到正则表达式中。您也不需要编写自己的UDF,如果这是您正在做的事情。使用内置函数REGEX_EXTRACT
和CONCAT
:
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/;