我正在解析表格中的一些数据:
(['L123', 'L234', 'L1', 'L253764'])
(['L23', 'L2'])
(['L5'])
...
其中parens中的短语(包括括号)被编码为单个chararray。
我想只提取L +(数字)标签来获取格式的元组:
((L123, L234, L1, L253764))
((L23, L2))
((L5))
我尝试使用正则表达式'(L \ d +)'来使用REGEX_EXTRACT_ALL,但它似乎每行只提取一个标记,这对我来说没用。有没有办法以我上面描述的方式创建元组?
答案 0 :(得分:2)
如果订单无关紧要,那么这将有效:
-- foo is the tuple, and bar is the name of the chararray
B = FOREACH A GENERATE TOKENIZE(foo.bar, ',') AS values: {T: (value: chararray)} ;
C = FOREACH B {
clean_values = FOREACH values GENERATE
REGEX_EXTRACT(value, '(L[0-9]+)', 1) AS clean_value: chararray ;
GENERATE clean_values ;
}
架构和输出是:
C: {clean_values: {T: (clean_value: chararray)}}
({(L123),(L234),(L1),(L253764)})
({(L23),(L2)})
({(L5)})
一般来说,如果你不知道阵列会有多少元素,那么一个包将更好。