我的数据存在于由管道分隔的txt文件中。不幸的是,2个字段可以有多个值。为了分离这些倍数,发送者再次使用管道,但在它周围加上引号。我的正则表达式工作了几个月,直到某种罕见的情况......
Regex目前:
([^\|]*)\|"?([^"]*)"?\|([^\|]*)\|"?([^"]*)"?
它适用于大多数情况下发生的以下情况: ABC | “part1的| 2部分” | ABC | “工具1 | TOOL2”
但是这种情况是([^"]*)
向前跳跃并从空白到引号末尾的所有内容:
ABC ABC || | “工具1 | TOOL2”
所以我意识到我必须考虑到下一个管道而不是报价。 只是不确定如何............. 附:对于那些可能正在考虑这个问题的PIG人,我从每个转义中删除了反斜杠,使其看起来更像Java,但在PIG中你需要2,fyi。
答案 0 :(得分:0)
在表达式中,您需要指定|
之间的部分可以引用或不引用。你可以这样做:
(("[^"]*")|((?!")[^|]*))
现在,您可以根据需要在|
之间多次重复此部分。