Vim Regex:在字符之间捕获*第一个*字实例

时间:2017-11-15 22:52:06

标签: regex vim vim-syntax-highlighting

我的组织有一种内部语言,语法如下:

cmo/create/mo1///tri
createpts/brick/xyz/2,2,2/0.,0.,0./1.,1.,1./1,1,1

我正在编写一个Vim语法文件,并希望捕获由两个字符包围的单词的第一个实例(在本例中为/),不带< / strong>捕获角色本身。

即,正则表达式将从上面的行中捕获

create
brick

到目前为止我的解决方案是使用这种模式:

[,/=" "].\{-}[,/=" "]

但是从/this/and/this/and/this开始,它会捕获 /this/ and /this/ and /this/

正如您所看到的,问题有两方面:(i)我当前的解决方案是贪婪的,(ii)当我只想要这些字所包含的字时,也会捕获/个字符。 / p>

谢谢!

1 个答案:

答案 0 :(得分:1)

一种可能的解决方案:

^[^\/]\+\/\zs[^\/]\+\ze\/
  • ^将搜索锚定到BOL,
  • [^\/]\+一个或多个非斜杠字符,尽可能多,
  • \/斜线,
  • \zs在这里开始比赛,
  • [^\/]\+一个或多个非斜杠字符,尽可能多。