我试图替换一个或多个反斜杠后跟一个引号.例如,我怎能取代的所有实例\\'有',\\\\'有'.
示例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 );
?>
Run Code Online (Sandbox Code Playgroud)
你的问题已经改变了.
如果要替换"一个或多个"反斜杠,请使用
"/\\\\+'/"
Run Code Online (Sandbox Code Playgroud)
再次,\当一个字符串变为逃脱一次\\,并再次逃脱为正则表达式成为\\\\.
您最初的问题是如何替换成反斜杠:
你想要一个简单的正则表达式:
preg_replace("/(\\\\\\\\)+'/","'", $subject);
Run Code Online (Sandbox Code Playgroud)
是的,所有这些\都是匹配一对字形反斜杠所必需的.
你可能会开始/\\'/- 两个反斜杠后跟一个'.首先,因为在PHP中的正则表达式是字符串,你需要的逃生反斜杠只生产两种文字反斜杠:
"/\\\\'/"
Run Code Online (Sandbox Code Playgroud)
接下来,你实际上正在生成正确的字符串(/\\'/)但是,现在你只是\在正则表达式级别转义一个,所以正则表达式引擎仍在解析它\'.为了让一对后的斜杠实际上是存在于最终的正则表达式,你必须逃离这四个反斜杠再次,产生
"/\\\\\\\\'/"
Run Code Online (Sandbox Code Playgroud)
接下来,你应该包含反斜杠()并添加一个量词,这样你就可以匹配一组或多组\\......
"/(\\\\\\\\)+'/"
Run Code Online (Sandbox Code Playgroud)
接下来是一个'.
这正确匹配偶数个黑色斜杠后跟a '.这将为工作can\\'t和can\\\\'t,但没有can\'t或can\\\'t等