我得到了许多我解析的平面文件源。其中一个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"
我的想法是使用一个简单的正则表达式
"(?!\|)(?<!\|)"
然而,这仍然与构成空场的两个连续双引号相匹配。
我也试过
\|*"\|*
我认为这会匹配任何与管道不相邻的双引号。
但这会捕获所有双引号。
这看起来应该很容易,但我被卡住了。
任何帮助都将不胜感激。
答案 0 :(得分:2)
在一般情况下,这显然是不可能的 - 如果评论是You need to use a pipe ("|") rather than < and >
怎么办? - 但对于99%的情况,你可以写:
(?<!\|)"(?!\|)
匹配既不是前面也不后面是管道的双引号,或者更好:
(?<!\||^)"(?!\||$)
还要求它不要与字符串的任何一端相邻。