我试图在字符串中找到最长的小数位数。
体育专业。字符串:
(3+2,44)*2,134 + (2,1 + 2,91280)*1,2
搜索:
,\zs\d\+
回答= 5(,91280)
我知道有一种方法可以使用substitute命令在文档中查找子匹配 但是如何在字符串中找到子匹配?
答案 0 :(得分:2)
要获得最长的十进制数字序列的长度,您可以组合几个标准函数,如下所示:
:echo max(map(split(str, '\D\+'), 'strlen(v:val)'))
当str
是字符串'(3+2,44)*2,134 + (2,1 + 2,91280)*1,2'
时,这会回复5
。
要获取(第一个)最长匹配本身,您可以进一步优化表达式:
:echo matchstr(str, '\d\{' . max(map(split(str, '\D\+'), 'strlen(v:val)')) . '}')
或者只是:echo max(split(str, '\D\+'))
也可以。
请参阅:h function-list
了解更多有用的功能。