2014-03-03 120 views
0

我是猪新手。在我写剧本我想执行类似这样的操作:替换猪中的多个单词

foreach X GENERATE REPLACE(word,'.*abc.*','abc') OR REPLACE(word,'.*def.*','def'). 

如果第一图案则匹配abc被别人取代,如果第二个模式匹配,然后def被替换。但我想这个语法是不正确的。有人可以帮助我的语法?

+0

你想更换两者如果他们都匹配?或者如果找不到'abc',你只想替换'def'?你真的想替换整个单词吗? –

+0

所以如果句子有pqabcpq,那么它应该被替换为abc。如果句子有iudefqw,则应该替换为def。令牌只包含一个单词,因此一次只能存在abc或def。所以我有一组令牌,例如。 (pqdsabceq.wqwowqabceqw,ewedefweqe),我应该得到(abc,abc,def)。 – Inquisitor

+0

好的。如果你有'(pqdsabceq.wqwowqabceqw,ewedefweqe,iluabcwedefagh)'?或者你能保证他们永远不会同时发生? –

回答

1

有几个方法可以做到这一点,但因为如果正则表达式不匹配字符串,你只是让你的字符串返回,这是相当紧凑:

Y = FOREACH X GENERATE REPLACE(REPLACE(word, '.*abc.*', 'abc'), '.*def.*', 'def'); 
+0

谢谢......那么工作......真的很愚蠢,我不这样想......反正谢谢你的回复。 – Inquisitor