如何在vim正则表达式中保持相同的子字符串

用户

我最理想的回答是:

我想换衣服

[*, 1, *, *] to [*, 2, *, *]

这里的星星指的是子串中的单个字符,我想保持不变。例如

^{pr2}$

如果人们知道如何用perl或python或其他什么工具来实现这一点,那也同样不错。 干杯


已被浏览了2462次
更新日期: 2020-10-28 19:50:04
3 个回答
fefe Tyson

如果这些是Python中的字符串

>>> a = "[0, 1, 0, 1]"
>>> b = a[:4] + '2' + a[5:]
>>> b
'[0, 2, 0, 1]'

列表更简单一些:

^{pr2}$
评论 - 2020年9月11日 20:56
fefe Tyson

这是有效的:)

1,$s/\[\(\d\+\),\s\+\d\+,\s\+\(\d\+\),\s\+\(\d\+\)\]/[\1, 2, \2, \3]/g

或者

^{pr2}$
评论 - 2020年9月11日 20:56
fefe Tyson

以下操作应符合您的要求:

:%s/\(\[[^,]*, *\)\(\d\)\([^]]*\]\)/\=submatch(1) . (submatch(2)+1) . submatch(3)/

在维姆,就是这样。在

评论 - 2020年9月11日 20:56

最新Python问答

推荐Python问答