在Java(Pig)Regex中,我该怎么做?

时间:2011-12-22 15:14:41

标签: java regex apache-pig

我的数据存在于由管道分隔的txt文件中。不幸的是,2个字段可以有多个值。为了分离这些倍数,发送者再次使用管道,但在它周围加上引号。我的正则表达式工作了几个月,直到某种罕见的情况......

Regex目前:

([^\|]*)\|"?([^"]*)"?\|([^\|]*)\|"?([^"]*)"?

它适用于大多数情况下发生的以下情况: ABC | “part1的| 2部分” | ABC | “工具1 | TOOL2”

但是这种情况是([^"]*)向前跳跃并从空白到引号末尾的所有内容: ABC ABC || | “工具1 | TOOL2”

所以我意识到我必须考虑到下一个管道而不是报价。 只是不确定如何............. 附:对于那些可能正在考虑这个问题的PIG人,我从每个转义中删除了反斜杠,使其看起来更像Java,但在PIG中你需要2,fyi。

1 个答案:

答案 0 :(得分:0)

在表达式中,您需要指定|之间的部分可以引用或不引用。你可以这样做:

(("[^"]*")|((?!")[^|]*))

现在,您可以根据需要在|之间多次重复此部分。