如果我想在下面的正则表达式的括号内得到每个匹配的长度,我该怎么做?:
^\(\-\+\s\)\+
我正在尝试使用以表格形式布局的数据来修改缓冲区中列的宽度。由于表格的前两行看起来像这样
DESIGN_ID DESIGN_YEAR SOURCE_REFERENCE
---------- ----------- ----------------
我想使用正则表达式来查找每列的当前宽度。
答案 0 :(得分:5)
那么,你想如何捕获它?
这将把它放在所有匹配行的开头:
:%s/^-\+\%(\s-\+\)*\s\?$/\=strlen(submatch(0)) . ': '. submatch(0)
\=
允许您将vimscript表达式的结果替换为匹配的字符串。
submatch(0)
是匹配的字符串(submatch(n)
将是第n个组)。