代码之家  ›  专栏  ›  技术社区  ›  New Alexandria

为什么这个正则表达式不能在sublimitext中工作而在Vim中工作?

  •  5
  • New Alexandria  · 技术社区  · 6 年前

    ^\([^\t]*\)\t\([^\t]*\)\t\([^\t]*\)$
    

    哪个应该匹配

    1. 行首
    2. 所有字母的捕获,直到一个标签
    3. 所有字母的捕获,直到一个标签

    在Vim中,这很好: correct regex capture

    1 回复  |  直到 4 年前
        1
  •  5
  •   Wiktor Stribiżew    6 年前

    Vim regex是 rather specific 与升华文本3使用的PCRE regex引擎表达式语法不同。

    在Sublime Text 3中,您可以将Vim中使用的模式写成

    ^([^\t\r\n]*)\t([^\t\r\n]*)\t([^\t\r\n]*)$
    

    看到了吗 regex demo

    (...) 应该用来组成一个捕获组,您需要添加 \r\n [^.]* 不会匹配换行符,但它会在崇高的文本3)。

    (...) (而不是 \(...\) )也可以在Vim中用作捕获组,但是您需要使用 very magic mode 使用这种语法。