我有一个字符串字段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)
。
任何人都知道如何返回所有匹配,正如函数名称所暗示的那样?
答案 0 :(得分:1)
REGEX_EXTRACT_ALL
用于提取正则表达式中的所有捕获组。它不会多次应用单个正则表达式。 This document有点过时,但REGEX_EXTRACT_ALL
仍然准确。
没有正则表达式可以捕获任意数量的组。 (请参阅this question。)如果你有一个已知的cntrl
字符串可能出现的限制,你可以设计一个大丑陋的正则表达式来捕获它们,但听起来你最好使用它TOKENIZE
然后单独处理字符串中的每个单词。