我的组织有一种内部语言,语法如下:
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>
谢谢!
答案 0 :(得分:1)
一种可能的解决方案:
^[^\/]\+\/\zs[^\/]\+\ze\/
^
将搜索锚定到BOL,[^\/]\+
一个或多个非斜杠字符,尽可能多,\/
斜线,\zs
在这里开始比赛,[^\/]\+
一个或多个非斜杠字符,尽可能多。