我正在尝试使用正则表达式增加版本号,但我似乎根本无法掌握正则表达式。我在尝试读取和更改的字符串中遇到符号问题。到目前为止我的代码是:
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)
关于python - 使用正则表达式增加版本号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3141642/