0
我有一些条目一点JSON文件,这里是一个部分:Vim的 - 替代命令和正则表达式
"i":{
"normale":"3c",
"bold":"4b",
"doppio":"6c"},
"is":{
"normale":"2c",
"bold":"33",
"doppio":"66"},
我意识到我必须在所有的值前加上“\ U25”,所以我尝试下面的命令:
:%s:\("\)\(\d\d"\)\|\("\)\(\d\w"\):"\\u25\2
的想法是寻找任何“DD”或“DW”,并与"\u25
同时保持rest.This替代第一双引号是结果:
"i":{
"normale":"\u25,
"bold":"\u25,
"doppio":"\u25},
"is":{
"normale":"\u25,
"bold":"\u2533",
"doppio":"\u2566"},
如果匹配的字符串只有两位数,则该命令正常工作:第一个双引号(第一个组)被替换,第二个组保留原样。 但是,如果匹配的字符串有一个数字和一个字符,它似乎忽略了第二组,取代了整个字符串。这两种模式是相同的,除了\w
,所以它应该完全一样。发生了什么?
啊哈!干净整洁,我没有意识到这一点。所以,也许我的命令不起作用,因为“dw”它被识别为一个十六进制字符,而不是“具有以下字符的数字” –
由于\ d匹配十进制数字,并且\ x'匹配十六进制数字? –