尝试使用REGEX_EXTRACT_ALL()从字符串中获取多个匹配项

时间:2014-01-17 19:03:11

标签: java regex apache-pig

我有一个字符串字段error_cd,其值为“cntrlb cntrlb asdv cntrlb asvd cntrla cntrlb cntrlb”

在PIG中,我正在尝试使用REGEX_EXTRACT_ALL(error_cd, '.*(cntrl[a-b]).*')来取回(cntrlb,cntrlb,cntrlb,cntrla,cntrlb)(cntrl,cntrl,...,cntrl)的元组。相反,我只回来了一场比赛(cntrl)

任何人都知道如何返回所有匹配,正如函数名称所暗示的那样?

1 个答案:

答案 0 :(得分:1)

REGEX_EXTRACT_ALL用于提取正则表达式中的所有捕获组。它不会多次应用单个正则表达式。 This document有点过时,但REGEX_EXTRACT_ALL仍然准确。

没有正则表达式可以捕获任意数量的组。 (请参阅this question。)如果你有一个已知的cntrl字符串可能出现的限制,你可以设计一个大丑陋的正则表达式来捕获它们,但听起来你最好使用它TOKENIZE然后单独处理字符串中的每个单词。