3

我得到了一些我解析的平面文件提要。其中一个提要有一个经常包含双引号的评论字段。

这没什么大不了的,除了文件是管道分隔的双引号限定文件这一事实!

下面我概述了我得到的字符串。

0|0.9|""|"M"|"X"|"0.2"|"This is the string with the "double" double quotes"

这是我想要的字符串。

0|0.9|""|"M"|"X"|"0.2"|"This is the string with the double double quotes"

我的想法是使用一个简单的正则表达式 "(?!\|)(?<!\|)"

但是,这仍然匹配构成空字段的两个连续双引号。

我也试过

\|*"\|*

我认为它会匹配任何不与管道相邻的双引号。

但这捕获了所有的双引号。

这似乎应该很容易,但我被卡住了。

任何帮助,将不胜感激。

4

1 回答 1

2

这在一般情况下显然是不可能的——如果评论是You need to use a pipe ("|") rather than < and >怎么办?——但对于 99% 的情况,你可以这样写:

(?<!\|)"(?!\|)

匹配一个既不在管道之前也不在管道之后的双引号,或者更好:

(?<!\||^)"(?!\||$)

还要求它不与字符串的任一端相邻。

于 2012-10-31T18:16:19.610 回答