【发布时间】:2015-10-06 00:52:57
【问题描述】:
我正在尝试找到正确的正则表达式模式来替换不在逗号,之后的双引号
在下面的字符串中,当它出现在一些不是分隔符/逗号的字符之后时,只删除一个双引号
"ahys"", "hshs","", "277-""
上面的字符串在preg_replace之后变成了这个
"ahys", "hshs","", "277-"
我正在使用这种模式,但它不起作用 - 它不仅替换引号,还替换左侧的一个字符
preg_replace('/([^"",])["]["]/', '"', '"ahys"", "hshs","", "277-""');
结果:
“啊哈”、“hshs”、“”、“277”
谁能告诉我这里的模式有什么问题?
【问题讨论】:
-
[^"",]的意思是“不是引号也不是逗号”。有两个"毫无意义,因为它是一个字符类。[aa]和[a]将执行相同的操作。和单字符字符类同样无用。"和["]也执行相同的操作。 -
只需将“”替换为“
-
@MarcB 明白了,谢谢,但我的问题仍然存在
-
是否可以有两个以上的连续双引号?在这种情况下,你想做什么?另一个问题,如果一个项目 (即双引号之间的子字符串) 以逗号结尾并用两个双引号关闭会发生什么?
-
@CasimiretHippolyte 不会有两个连续的双引号 - 用两个双引号关闭,比如?