正则表达式匹配两个骗局

时间:2012-10-31 18:00:34

标签: regex

我得到了许多我解析的平面文件源。其中一个Feed有一个注释字段,通常包含双引号。

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

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

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"

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

然而,这仍然与构成空场的两个连续双引号相匹配。

我也试过

\|*"\|*

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

但这会捕获所有双引号。

这看起来应该很容易,但我被卡住了。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:2)

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

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

匹配既不是前面也不后面是管道的双引号,或者更好:

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

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