Vim 正则表达式:捕获字符之间单词的*第一个*实例
Vim Regex: Capture *first* instance of word between characters
我的组织有一种内部语言,语法如下:
cmo/create/mo1///tri
createpts/brick/xyz/2,2,2/0.,0.,0./1.,1.,1./1,1,1
我正在编写一个 Vim 语法文件,并希望捕获 第一个 由两个字符括起的单词实例(在本例中,/
), 没有 捕获字符本身。
即,正则表达式将从上面的行中捕获,
create
brick
到目前为止我的解决方案是使用这个模式:
[,/=" "].\{-}[,/=" "]
但是从/this/and/this/and/this
开始,它会捕获/this/
and
/this/
and
/this/
.
如您所见,问题有两个方面:(i) 我当前的解决方案是贪婪的,并且 (ii) 也捕获 /
个字符,而我只想要这些字符所包含的单词.
谢谢!
一种可能的解决方案:
^[^\/]\+\/\zs[^\/]\+\ze\/
^
将搜索锚定到 BOL,
[^\/]\+
一个或多个非斜线字符,尽可能多,
\/
一个斜杠,
\zs
从这里开始比赛,
[^\/]\+
一个或多个非斜杠字符,尽可能多。
我的组织有一种内部语言,语法如下:
cmo/create/mo1///tri
createpts/brick/xyz/2,2,2/0.,0.,0./1.,1.,1./1,1,1
我正在编写一个 Vim 语法文件,并希望捕获 第一个 由两个字符括起的单词实例(在本例中,/
), 没有 捕获字符本身。
即,正则表达式将从上面的行中捕获,
create
brick
到目前为止我的解决方案是使用这个模式:
[,/=" "].\{-}[,/=" "]
但是从/this/and/this/and/this
开始,它会捕获/this/
and
/this/
and
/this/
.
如您所见,问题有两个方面:(i) 我当前的解决方案是贪婪的,并且 (ii) 也捕获 /
个字符,而我只想要这些字符所包含的单词.
谢谢!
一种可能的解决方案:
^[^\/]\+\/\zs[^\/]\+\ze\/
^
将搜索锚定到 BOL,[^\/]\+
一个或多个非斜线字符,尽可能多,\/
一个斜杠,\zs
从这里开始比赛,[^\/]\+
一个或多个非斜杠字符,尽可能多。