Search notes:

VIM regular expressions: match at specific columns only

" ..\vimscript\run_.bat column_n

redir > column_n.out

"            12345678901
let s:str = 'foo bar baz'

let s:matched = matchstr(s:str, '...\%8c')
echo '>' . s:matched . '<'
" >bar<

fu RegexpForPos(pos, regexp)

   return
   \ '\v'                .
   \ '%<'  . (a:pos + 1) . 'v' .
   \          a:regexp   .     
   \ '%>'  .  a:pos      . 'v'

endfu
                      1         2         3         4         5         6         7  
"            1234567890123456789012345678901234567890123456789012345678901234567890123
let s:str = '# abc-7-def etc #ghi-42-jkl, foo, bar and # yyy-19-zzz or #qqq-234567-rrr'

for s:pos in range(42, 55)

    let s:matched = matchstr(s:str, RegexpForPos(s:pos, '# *\w+-\d+-\w+'))

    echo s:pos . '  >' . s:matched . '<'

endfor
" 42  ><
" 43  ># yyy-19-zzz<
" 44  ># yyy-19-zzz<
" 45  ># yyy-19-zzz<
" 46  ># yyy-19-zzz<
" 47  ># yyy-19-zzz<
" 48  ># yyy-19-zzz<
" 49  ># yyy-19-zzz<
" 50  ># yyy-19-zzz<
" 51  ># yyy-19-zzz<
" 52  ># yyy-19-zzz<
" 53  ># yyy-19-zzz<
" 54  ># yyy-19-zzz<
" 55  ><

redir END
q
Github repository about-vim, path: /regular_expressions/column_n.vim

See also

regular expressions
VIM script

Index