duandong1869 2016-12-16 17:08
浏览 33
已采纳

如果没有后跟n,如何替换所有出现的\?

Seems to be relatively simple task that gets me stuck in one PHP application. I have a string which has a bunch of in it. Those are fine and need to stay there. However, there are also single occurrences of the character \ and those I need to replace or remove, let's just say with empty character without removing the ones that are followed by n.

The best I came up with was to first replace all with something else, some weird character, then replace the remaining \ with empty space and then convert back the weird character to . However, that seems to be a waste of time and resources, besides, nothing guarantees me that I'll find weird enough character that will never be encountered in the rest of the string...

Any tips?

  • 写回答

2条回答 默认 最新

  • douye8500 2016-12-16 17:17
    关注

    You need

    $s = preg_replace('~\\\\(?!n)~', '', $s);
    

    See the PHP demo:

    $s = '\
     \\t \\';
    $s = preg_replace('~\\\\(?!n)~', '', $s);
    echo $s; // => 
     t 
    

    We need 4 backslashes to pass 2 literal backslashes to the regex engine to match 1 literal backslash in the input string. The (?!n) is a negative lookahead that fails all matches of a backslash that is immediately followed with n.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 opencv图像处理,需要四个处理结果图
  • ¥15 无线移动边缘计算系统中的系统模型
  • ¥15 深度学习中的画图问题
  • ¥15 java报错:使用mybatis plus查询一个只返回一条数据的sql,却报错返回了1000多条
  • ¥15 Python报错怎么解决
  • ¥15 simulink如何调用DLL文件
  • ¥15 关于用pyqt6的项目开发该怎么把前段后端和业务层分离
  • ¥30 线性代数的问题,我真的忘了线代的知识了
  • ¥15 有谁能够把华为matebook e 高通骁龙850刷成安卓系统,或者安装安卓系统
  • ¥188 需要修改一个工具,懂得汇编的人来。