php正则表达式匹配前面没有特定字符的字符
我有一个字符串,其中有带双引号的部分。我试图用单引号替换所有的双引号,除了那些带转义的部分:php正则表达式匹配前面没有特定字符的字符,php,regex,Php,Regex,我有一个字符串,其中有带双引号的部分。我试图用单引号替换所有的双引号,除了那些带转义的部分:\“ 我正在尝试构建一个正则表达式,它匹配所有的“,除了像\” 因此,当我使用preg\u replace时,我将得到如下结果 "love" -> 'love' "John said \"HI\"" - > 'John said \"HI\"' 我试过以下方法,但效果正好相反 [<^\\]" [您可以使用负查找: (?<!\\)" 这就产生了 'love' 'John s
\“
我正在尝试构建一个正则表达式,它匹配所有的“
,除了像\”
因此,当我使用preg\u replace
时,我将得到如下结果
"love" -> 'love'
"John said \"HI\"" - > 'John said \"HI\"'
我试过以下方法,但效果正好相反
[<^\\]"
[您可以使用负查找:
(?<!\\)"
这就产生了
'love'
'John said \"HI\"'
请注意,反斜杠在PHP
中也需要转义,因此您在这里总共需要四个反斜杠。简单说明:您将无法在中检测到具体转义的“
”,John说“嗨”
,“\”不再在字符串中。如果不转义,则相反,这将是一个语法错误。或者您是否有“John说\\\\\\“嗨\\\\”
?@Jan这个问题显然是重复的,已经有了一个很好的解决方案,为什么不关闭?你的答案无论如何都是错误的。@WiktorStribiżew:为什么应该是错误的?顺便说一句,你的答案有四次向上投票,所以已经被问了无数次了(问题是回溯),为什么不也关闭这个?@Jan回溯相关的问题从来都不明显。如果你发现一个具有相同模式的问题,我将关闭该问题。你在这里的解决方案不考虑逃逸的反斜杠。@WiktorStribiżew:搜索揭示(顺便说一句,由你回答),和。谢谢,Jan。感谢。
'love'
'John said \"HI\"'