正则表达式找到"

JMC*_*JMC 2 php regex

什么是正则表达式找到 \"

我认为就是这样:'/\\"/'但我需要在一个非常大的数据集上使用它,所以需要确保这是正确的.

我需要替换它,"所以我的代码是:$data = preg_replace('/\\"/', '"', $data)

那是对的吗?

Flo*_*ern 5

为了匹配反斜杠,你需要"双重"它们,所以你最后有四个\:

$data = preg_replace('/\\\\"/', '"', $data);
Run Code Online (Sandbox Code Playgroud)

为什么你需要4 \:PHP解析一个字符串\\",\"而RegEx将其解释为,"因为在RegEx中你不需要转义".所以它不匹配\".\\\\"将被解析为RegEx \\"将解释为\".


mer*_*tor 5

除非后面的字符是可以转义的字符(例如反斜杠本身),否则不需要在单引号字符串或正则表达式中转义反斜杠.

双引号不需要转义,也不能在单引号字符串中转义.在正则表达式中,它不必是,但也可以.

这意味着\\在单引号字符串和正则表达式中都会变为\,而\"在单引号字符串中仍然存在\",而在正则表达式中它变为".

但是,在PHP中,您只能从字符串创建正则表达式,因此必须转义两次.

换一种说法...

Original string    String processed   Regexp processed
'/\"/'             /\"/               "
'/\\"/'            /\"/               "
'/\\\"/'           /\\"/              \"
'/\\\\"/'          /\\"/              \"
'/\\\\\"/'         /\\\"/             \"
'/\\\\\\"/'        /\\\"/             \"
'/\\\\\\\"/'       /\\\\"/            \\"
Run Code Online (Sandbox Code Playgroud)

奖金反斜杠

当然,在双引号字符串中,"确实需要进行转义,所以...

"/\"/"             /"/                "
"/\\"/"            syntax error
"/\\\"/"           /\"/               "
"/\\\\"/"          syntax error
"/\\\\\"/"         /\\"/              \"
"/\\\\\\"/"        syntax error
"/\\\\\\\"/"       /\\\"/             \"
"/\\\\\\\\"/"      syntax error
"/\\\\\\\\\"/"     /\\\\"/            \\"
Run Code Online (Sandbox Code Playgroud)

我认为你应该preg_replace("/\\\\\\\"/", "\"", $data)只是为了安全的混乱.