我的文字:
Petro 2013 mytext, 2013, Pimme 2012 2012 2011 2013
我的代码:
let myhits = []
1s/mytext,\s\zs\d\+\ze,\s/\=add(myhits,submatch(0))[-1]/g
此代码将第二'2013'添加到myhits中 输出:
myhits = ['2013']
我的问题是:
是否可以在列表中添加每个子匹配的开始和结束的列位置?
期望的输出:
myhits = ['20-23_2013']
答案 0 :(得分:1)
我打破了行中的逻辑,如果你愿意,你可以把它打包成一行:
let g:myhits=[]
function! DoIt()
let s = getline('.')
let re = 'mytext,\s\zs\d\+\ze,\s'
let b = match(s,re)
let m = matchstr(s,re)
if b>=0
call add(g:myhits, b+1 . ('-'. (b+len(m) ).'_'.m))
endif
endfunction
它将预期的字符串添加到列表中。