php正则表达式将双反斜杠替换为单反斜杠
我不想使用php正则表达式将双反斜杠替换为单反斜杠,php,regex,backslash,Php,Regex,Backslash,我不想使用stripslashes(),因为我只想用“\”替换“\” 我尝试了preg\u replace(“/\ \ \/”,“\ \”,'2\\sin(\\pi s)\\Gamma(s)\\zeta(s)=I\\oint\u C\\frac{e^x-1}\\mathrm{d}x') 对我来说,它返回:2\\sin(\\pi s)\\Gamma(s)\\zeta(s)=i\\oint\u C\\frac{-x^{s-1}{e^x-1}\\mathrm{d}x 各种在线regex测试人员都表示上
stripslashes()
,因为我只想用“\”替换“\”
我尝试了preg\u replace(“/\ \ \/”,“\ \”,'2\\sin(\\pi s)\\Gamma(s)\\zeta(s)=I\\oint\u C\\frac{e^x-1}\\mathrm{d}x')代码>
对我来说,它返回:2\\sin(\\pi s)\\Gamma(s)\\zeta(s)=i\\oint\u C\\frac{-x^{s-1}{e^x-1}\\mathrm{d}x
各种在线regex测试人员都表示上述方法应该有效。为什么不呢?您不需要为此使用正则表达式,请使用
$newstr = str_replace("\\\\", "\\", $mystr);
首先看,就像许多其他人所说的那样,正则表达式对于这项工作来说可能是一个过于沉重的工具,但是您使用的解决方案应该可以工作
$newstr = preg_replace('/\\\\/', '\\', $mystr);
将为您提供预期的结果,请注意,preg_replace返回一个新字符串,并且不会修改现有的字符串,这可能是您遇到的问题
在这种情况下,您也可以使用较便宜的str_替换:
$newstr = str_replace('\\\\', '\\', $mystr);
这种方法花费的CPU时间和内存要少得多,因为它不需要为这样的简单任务编译正则表达式。您的实际代码是什么?您是在执行$a=preg\u replace(…$a)
还是只调用preg\u replace而没有实际保存其结果?首先:尝试preg\u replace('/\\\\\\/','\\','2\\sin(…);
(单引号)。然后阅读str\u replace()
,对于该作业来说,egex是错误的工具。是否可以使用str\u replace('/'/','/','/',$variable);一个相关的问题(将single\替换为double\):您的代码将抛出一个解析错误。它应该是$newqsstr=str\u replace(“\\\\”,“\\\”,$mystr);
@SharanyaDutta谢谢,我一定是把replace调用弄错了。编辑了它。很抱歉这个错误!@UliKöhler更简单更好,对吧,因为使用regex“/\\\/”
您将匹配单个反斜杠,因为引擎需要一个转义反斜杠来匹配文字反斜杠,因为反斜杠在正则表达式中有一个。因此,将双反斜杠与双引号str模式匹配将是“/\\\\{2}/”
。