我正在尝试使用perl命令行(perl -i.bak -ape
)更新assemblyinfo文件中的版本,我在想(显然是错误的)s/\d+\.\d+\.(\d+).(\d+)/5.1/
只会替换分组,但实际上它会替换整个版本。这就是我需要的。
OLD=1.0.0.0
NEW=1.0.5.1
答案 0 :(得分:3)
您可以使用\K
来删除您不想替换的部分(将所有内容保留到\K
)。像这样:
s/\d+\.\d+\.\K\d+\.\d+/5.1/
如果您的Perl版本不支持\K
(旧版),您可以使用以下捕获组:
s/(\d+\.\d+)\.\d+\.\d+/$1.5.1/
如果您没有.
匹配任何字符(除了.
的新行除外),也会为您/s
转义。
答案 1 :(得分:2)
由于您要更新特定版本,请考虑匹配该版本并使用正面的lookbehind来保留您不想更改的部分:
s/(?<=1\.0\.)0\.0/5.1/
希望这有帮助!