V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iesvme
V2EX  ›  Vim

在 vim 正则里,如何只查找 //里的 j 字母呢?

  •  
  •   iesvme · 2016-10-24 00:23:21 +08:00 · 2269 次点击
    这是一个创建于 2982 天前的主题,其中的信息可能已经有所发展或是发生改变。

    dj /ddjkfie/
    aajbj /cjaaj/
    jgo /j'racb/
    我用[j]不能排除前面的 j
    请教 vim 大虾:在 vim 正则里,如何只查找 //里的 j 字母呢?

    第 1 条附言  ·  2016-10-24 09:00:08 +08:00
    谢谢各位,怪我没说清楚,我是想把 j 替换为 c
    dj /ddjkfie/ [ajer]<br>
    aajbj /cjaaj/ (ctjjer)<br>
    jgo /j'racb/<br>
    我用[j]不能排除前面的 j<br>
    请教 vim 大虾:在 vim 正则里,如何只替换 //里的 j 字母呢?
    6 条回复    2016-10-24 15:32:33 +08:00
    fuzhuo233
        1
    fuzhuo233  
       2016-10-24 00:34:16 +08:00 via iPhone
    其实你就是想匹配单词...
    方法一 随便光标移到一个独立的 j 然后 gd
    方法二 查找\<j\>
    fuzhuo233
        2
    fuzhuo233  
       2016-10-24 00:38:22 +08:00 via iPhone
    看错了…你找到那个 j 干嘛呢… 正则能匹配中间有个 j 的 //对。表达式\/.*j.*/\
    ivvei
        3
    ivvei  
       2016-10-24 00:59:13 +08:00
    \/\@<=j
    reus
        4
    reus  
       2016-10-24 01:03:22 +08:00
    \/.*\zsj\ze.*\/
    4641585
        5
    4641585  
       2016-10-24 10:54:30 +08:00
    :%s/\(\/.\{-}\)j\(.\{-}\/\)/\1c\2/

    这样只能匹配第一个出现的 j
    让我想想再怎么搞一下……
    ltux
        6
    ltux  
       2016-10-24 15:32:33 +08:00
    :%s#\v(/[^/]*)@<=j([^/]*/)@=#c#g
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   850 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 20:54 · PVG 04:54 · LAX 12:54 · JFK 15:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.