正则表达式找到“

时间:2011-08-17 20:19:07

标签: php regex

查找\"

的正则表达式是什么

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

我需要将其替换为",因此我的代码为:$data = preg_replace('/\\"/', '"', $data)

这是对的吗?

7 个答案:

答案 0 :(得分:5)

要匹配反斜杠,您需要“双重转义”它们,所以最后有四个\

$data = preg_replace('/\\\\"/', '"', $data);

为什么需要4 \:PHP将字符串\\"解析为\",RegEx将其解释为",因为在RegEx中您不需要转义" 1}}。所以它不匹配\"\\\\"将被解析为\\",由RegEx解释为\"

答案 1 :(得分:5)

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

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

这意味着单引号字符串和正则表达式中的\\变为\,而单引号字符串中的\"仍为\",而在正则表达式变为"

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

换句话说......

Original string    String processed   Regexp processed
'/\"/'             /\"/               "
'/\\"/'            /\"/               "
'/\\\"/'           /\\"/              \"
'/\\\\"/'          /\\"/              \"
'/\\\\\"/'         /\\\"/             \"
'/\\\\\\"/'        /\\\"/             \"
'/\\\\\\\"/'       /\\\\"/            \\"

奖金反斜杠

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

"/\"/"             /"/                "
"/\\"/"            syntax error
"/\\\"/"           /\"/               "
"/\\\\"/"          syntax error
"/\\\\\"/"         /\\"/              \"
"/\\\\\\"/"        syntax error
"/\\\\\\\"/"       /\\\"/             \"
"/\\\\\\\\"/"      syntax error
"/\\\\\\\\\"/"     /\\\\"/            \\"

我认为你应该选择preg_replace("/\\\\\\\"/", "\"", $data)只是为了安全混淆。

答案 2 :(得分:4)

只要您指的是文字字符串\",匹配正则表达式中的这些字符就需要:

 \\"

因此,您在preg_ *函数中使用/\\\\"/作为模式参数。 (你只需要逃避反斜杠 - 从PHP handles backslashes in single and double-quotes strings as a special character开始,你需要逃避它们两次。)

这个所有你需要匹配吗?如果是这样,我建议您只使用str_replace()

$string = str_replace('\\"', '"', $string);

对于像这样的文字字符的简单搜索/替换,像str_replace()这样的迭代字符串函数将比正则表达式更快。<​​/ p>

答案 3 :(得分:2)

这个是正确的。

preg_replace('/\\\"/', '"', $data);

http://sandbox.phpcode.eu/g/1283c.php

答案 4 :(得分:1)

在PHP中,反斜杠具有特殊含义。因此,您可以将文字反斜杠表示为以下任一项:\\\\\\\。另一种方法是使用字符类:[\\]

请参阅此处标有“注意”的部分:

http://www.php.net/manual/en/regexp.reference.escape.php

答案 5 :(得分:0)

这对你的数据不一样吗?

str_replace('\\"','"',$data);

答案 6 :(得分:0)

$result = preg_replace('/\\\\"/i', '"', $subject);