我有一个字符串,其中有双引号的部分。我试图用单引号替换所有双引号,除了那些具有转义的部分,即:\"
。
我正在尝试构建一个匹配所有"
的正则表达式,除了\"
因此,当我使用preg_replace
时,我会得到以下结论。
"love" -> 'love'
"John said \"HI\"" - > 'John said \"HI\"'
我尝试过以下完全正好相反的事情。
[<^\\]"
答案 0 :(得分:2)
你可以使用neg。回顾后:
(?<!\\)"
<小时/>
在PHP
:
<?php
$strings = ['"love"', '"John said \"HI\""'];
$regex = '~(?<!\\\\)"~';
foreach ($strings as $string) {
echo preg_replace($regex, "'", $string) . "\n";
}
?>
这会产生
'love'
'John said \"HI\"'
请注意,在PHP
中也需要对反斜杠进行转义,因此这里总共需要四个反斜杠。