使用正则表达式递增版本号

2024-05-15 07:45:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用正则表达式增加一个版本号,但我似乎根本无法掌握正则表达式的窍门。我有麻烦的符号在字符串我试图阅读和改变。到目前为止,我掌握的代码是:

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()

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

^{pr2}$

我希望写入文件的内容是:

[assembly: AssemblyFileVersion("1.0.0.1")]

所以基本上我想把内部版本号增加一。在

谁能帮我修正一下我的常规表情吗。我似乎很难掌握必须绕过符号的正则表达式。在

谢谢你的帮助。在


Tags: 字符串inidforreadversion版本号符号
2条回答

如果您将版本指定为“1.0.0.*”,那么至少在您使用Visual工作室.NET. 在

我不确定regex是否是您的最佳选择,但其中一种方法是:

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)

祝你好运。在

如果我必须这样做,我会把字符串转换成int,去掉点,再加上一个,再转换回字符串。在

好吧,我本来也会用一个整数版本号。在

相关问题 更多 >