在java(pig)regex中,如何执行以下操作?

h4cxqtbf  于 2021-06-21  发布在  Pig
关注(0)|答案(1)|浏览(247)

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

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

它适用于以下大多数情况: |“part1 | part2”| |“tool1 | tool2”
但这个案子 ([^"]*) 跳到前面,把所有从空白到引号的结尾:(ABC)ABC“Toe1工具2”
所以我意识到我必须考虑下什么时候有管道而不是报价。只是不知道如何。。。。。。。。。。。。。p、 对于那些可能正在看这个的Pig人,我从每个转义中删除了一个反斜杠,使它看起来更像java,但是在pig中你需要2个,仅供参考。

mzillmmw

mzillmmw1#

在表达式中,需要指定 | s可以被引用,也可以不被引用。您可以按以下步骤进行:

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

现在你可以重复这个部分几次 | 在两者之间,你需要的话。

相关问题