Regex 正则表达式匹配二

Regex 正则表达式匹配二,regex,Regex,我得到了许多我解析的平面文件提要。其中一个提要有一个注释字段,该字段通常包含双引号 这没什么大不了的,除了这个文件是一个管道分隔的双引号限定文件 下面我概述了我得到的字符串 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|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"
我的想法是使用一个简单的正则表达式
“(?!\ \ \ \)(?)

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

但这包含了所有的双引号

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


任何帮助都将不胜感激。

在一般情况下,这显然是不可能的-如果注释是
,您需要使用管道(“|”)而不是
?-但是对于99%的情况,您可以写:

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

也要求它不与字符串的两端相邻。

基于什么标准删除了
X
0.2
?对不起,这是我的错误。我已更正。我只想删除注释字段中的双引号。
(请包括实际问题和运行时环境,肖恩。我假定您想删除引号。注意,答案可能包含所有ReGEXP引擎中不存在的特征。现在是记事本+中的查找/替换。在SSI中处理这些文件之前,我先解析PHP文件。我遇到的问题是SSIS文件PAR。ser没有办法处理这个问题。它有可以处理它的转换,但是解析器在它能够将行传递到集成的下一部分之前就爆炸了。所以如果regexp引擎能够处理零宽度的向前看/向后看,我会对它们进行预处理。@owlstead:是的,绝对可以。问题包括
(?,所以我认为这意味着它可以安全使用,但我可能应该明确地提到它。我注意到您颠倒了“向前看”和“向后看”的顺序。这个顺序重要吗?谢谢,Shawn@ShawnTaylor:与其说我颠倒了顺序,不如说我把lookback放在了
之前
”后面的先行词。它们的相对顺序并不重要,但它们的确切位置确实重要。(例如,regex
(?!\)”(?)将等同于regex
,因为先行词和先行词都只是断言
不是管道。)
(?<!\||^)"(?!\||$)