代码之家  ›  专栏  ›  技术社区  ›  nnyby

小维姆正则表达式

  •  1
  • nnyby  · 技术社区  · 15 年前

    '../DisplayPhotod6f6.jpg?t=before&tn=1&id=130' ,我想把问号后面的东西都拿出来,看起来像 '../DisplayPhotod6f6.jpg' .

    s/\(.\.\.\/DisplayPhoto.\{4,}\.jpg\)*'/\1'/g
    

    5 回复  |  直到 15 年前
        1
  •  1
  •   Drasill    15 年前

    我会使用宏,有时比regexp(和交互式)简单:

    qa
    /DisplayPhoto<Enter>
    f?dt'
    n
    q
    

    还有一些 @a ,或 20000@a 穿过所有的线。

        2
  •  4
  •   jamessan    15 年前

    \.\{4,} 正在尝试匹配4个或更多 . 角色。看起来你想要的是“匹配4个或更多的角色”( .\{4,} )但“匹配4个或更多非- “字符”( [^.]\{4,} )可能更准确。你还需要换个房间 * 在图案的末尾 .* * \(\) 组。

        3
  •  3
  •   matias    15 年前

    我认为最简单的方法是:

    s/?.*$/'/g
    

    这说明:删除问号后的所有内容,并用一个引号替换。

        4
  •  1
  •   jerone    15 年前

    以下regexp: /(\.\./DisplayPhoto.*\.jpg)/gi

    根据以下示例进行测试:

    ../DisplayPhotocef3.jpg?t=before&amp;tn=1&amp;id=54
    ../DisplayPhotod6f6.jpg?t=before&amp;tn=1&amp;id=130
    

    将导致:

    ../DisplayPhotocef3.jpg
    ../DisplayPhotod6f6.jpg
    
        5
  •  0
  •   Swiss    15 年前
    %s/\('\.\.\/DisplayPhoto\w\{4,}\.jpg\).*'/\1'/g
    

    注意事项:

    • \w而不是“.”,以防出现一些格式错误的文件名。