字符串中的子匹配

时间:2014-09-27 18:27:54

标签: regex string vim decimal

我试图在字符串中找到最长的小数位数。

体育专业。字符串:

(3+2,44)*2,134 + (2,1 + 2,91280)*1,2

搜索:

,\zs\d\+

回答= 5(,91280)

我知道有一种方法可以使用substitute命令在文档中查找子匹配 但是如何在字符串中找到子匹配?

1 个答案:

答案 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了解更多有用的功能。