Skip to main content
 首页 » 编程设计

python之使用正则表达式增加版本号

2025年05月04日23傻小

我正在尝试使用正则表达式增加版本号,但我似乎根本无法掌握正则表达式。我在尝试读取和更改的字符串中遇到符号问题。到目前为止我的代码是:

version_file = "AssemblyInfo.cs"  
read_file = open(version_file).readlines()  
write_file = open(version_file, "w")  
r = re.compile(r'(AssemblyFileVersion\s*(\s*"\s*)(\S+))\s*"\s*')  
 
for l in read_file:  
    m1 = r.match(l)  
    if m1:  
        VERSION_ID=map(int,m1.group(2).split("."))  
        VERSION_ID[2]+=1 # increment version  
        l = r.sub(r'\g<1>' + '.'.join(['%s' % (v) for v in VERSION_ID]), l)  
    write_file.write(l)  
write_file.close() 

我试图读取和更改的字符串是:

[assembly: AssemblyFileVersion("1.0.0.0")] 

我想写入文件的是:

[assembly: AssemblyFileVersion("1.0.0.1")] 

所以基本上我想将内部版本号增加一个。

谁能帮我修正我的正则表达式。我似乎很难掌握必须绕过符号的正则表达式。

感谢您的帮助。

请您参考如下方法:

如果您将版本指定为“1.0.0.*”,那么据我所知,它会在每次构建时自动更新,至少在您使用 Visual Studio.NET 时是这样。

我不确定正则表达式是你最好的选择,但一种方法是这样的:

import re 
 
# Don't bother matching everything, just the bits that matter. 
pat = re.compile(r'AssemblyFileVersion.*\.(\d+)"') 
 
 
# ... lines omitted which set up read_file, write_file etc. 
 
for line in read_file: 
    m = pat.search(line) 
    if m: 
        start, end = m.span(1) 
        line = line[:start] + str(int(line[start:end]) + 1) + line[end:] 
    write_file.write(line)