PHP preg_replace\\'

标签 php regex

我正在尝试替换一个或多个反斜杠,后跟引号。例如,如何将 \\' 的所有实例替换为 ',将 \\\\' 替换为 ' >.

示例 IO:

它不会伤害。 => 它不会伤害

它不会伤害。 => 它不会伤害

还有

不会造成伤害。 => 不会造成伤害 我尝试开始的示例代码

<?php
$pattern = '/[/{2,}]/';
$replacement = '\'';
$subject = 'It can\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'t hurt';
echo preg_replace($pattern, $replacement, $subject, -1 );
?>

最佳答案

您的问题已更改。

如果你想替换“一个或多个”反斜杠,只需使用

"/\\\\+'/"

再次,\ 转义一次,字符串变为 \\,并再次转义,正则表达式变为 \\\\


您最初的问题是如何替换成对的反斜杠:

你想要一个简单的正则表达式:

preg_replace("/(\\\\\\\\)+'/","'", $subject);

是的,所有这些 \ 都是匹配一对反斜杠文字所必需的。

您可以以 /\\'/ 开头——两个反斜杠后跟一个 '。首先,由于 PHP 中的正则表达式是字符串,因此您需要转义两个反斜杠以生成两个文字反斜杠:

"/\\\\'/"

接下来,您实际上生成了正确的字符串 (/\\'/) 但是,现在您只是转义单个 \ 在正则表达式级别,因此正则表达式引擎仍然将其解析为 \'。为了允许一对反斜杠实际出现在最终的正则表达式中,您必须再次转义这四个反斜杠,产生

"/\\\\\\\\'/"

接下来,您应该将反斜杠括在 () 中并添加量词,以便匹配一组或多组 \\...

"/(\\\\\\\\)+'/"

后跟一个'

这可以正确匹配偶数个黑色斜线,后跟一个'。这适用于 can\\'tcan\\\\'t,但不适用于 can\'tcan\\\'t

关于PHP preg_replace\\',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28331692/

相关文章:

c# - 将字符串中的 JSON 日期替换为更易读的日期

javascript - 在 Regex 问题 : TypeError: cannot read property "1" from null 中需要帮助

php - 打印前重新排列数据

php - 单击图像/按钮时如何触发文件浏览

php - MySQL/PHP : Auto-Suggest entries similar to this one

regex - SED:从两条特定行中删除模式

c# - 为什么括号使我的正则表达式不匹配?

python - 在python中拆分多个字符的字符串

php - 代码点火器 : Call to a member function num_rows() on a non-object

php - 如何确保 icalendar (.ics) 订阅的安全?