我正在尝试替换一个或多个反斜杠,后跟引号。例如,如何将 \\'
的所有实例替换为 '
,将 \\\\'
替换为 '
>.
示例 IO:
它不会伤害。
=> 它不会伤害
它不会伤害。
=> 它不会伤害
还有
不会造成伤害。
=> 不会造成伤害
我尝试开始的示例代码
<?php
$pattern = '/[/{2,}]/';
$replacement = '\'';
$subject = 'It can\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'t hurt';
echo preg_replace($pattern, $replacement, $subject, -1 );
?>
最佳答案
您的问题已更改。
如果你想替换“一个或多个”反斜杠,只需使用
"/\\\\+'/"
再次,\
转义一次,字符串变为 \\
,并再次转义,正则表达式变为 \\\\
。
您最初的问题是如何替换成对的反斜杠:
你想要一个简单的正则表达式:
preg_replace("/(\\\\\\\\)+'/","'", $subject);
是的,所有这些 \
都是匹配一对反斜杠文字所必需的。
您可以以 /\\'/
开头——两个反斜杠后跟一个 '
。首先,由于 PHP 中的正则表达式是字符串,因此您需要转义两个反斜杠以生成两个文字反斜杠:
"/\\\\'/"
接下来,您实际上生成了正确的字符串 (/\\'/
) 但是,现在您只是转义单个 \
在正则表达式级别,因此正则表达式引擎仍然将其解析为 \'
。为了允许一对反斜杠实际出现在最终的正则表达式中,您必须再次转义这四个反斜杠,产生
"/\\\\\\\\'/"
接下来,您应该将反斜杠括在 ()
中并添加量词,以便匹配一组或多组 \\
...
"/(\\\\\\\\)+'/"
后跟一个'
。
这可以正确匹配偶数个黑色斜线,后跟一个'
。这适用于 can\\'t
和 can\\\\'t
,但不适用于 can\'t
或 can\\\'t
等
关于PHP preg_replace\\',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28331692/