我正在尝试用引号替换一个或多个反斜杠。例如,如何将\\'
的所有实例替换为'
,将\\\\'
替换为'
。
样本IO:It can\\\\\\\\\\\\\\'t hurt.
=> It can't hurt
It can\\'t hurt.
=> It can't hurt
也It can\'t hurt.
=> It can't hurt
我想开始的示例代码
<?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 - PHP preg_replace\\',我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28331692/