使用正则表达式增加版本号
问题描述:
我正在尝试使用正则表达式增加版本号,但我似乎无法得到正则表达式的挂起。我正在尝试读取和更改字符串中的符号。我到目前为止的代码是:使用正则表达式增加版本号
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")]
所以基本上我想增加一个版本号。
任何人都可以帮助我修复我的regualr表达。我似乎无法掌握必须避开符号的正则表达式。
感谢您的任何帮助。
答
如果您将版本指定为“1.0.0。*”,那么AFAIK会自动更新每个版本,至少如果您使用的是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)
答
祝正则表达式。
如果我必须这样做,我会将字符串转换为int,方法是删除点,添加一个并转换回字符串。
那么,我也会在第一个地方使用整数版本号。
+0
这是一个.NET版本声明 - 你没有太多关于格式的选择。 – 2010-06-29 14:50:26
非常感谢,这完美的作品。我真的需要去处理正则表达式。 – chrissygormley 2010-06-29 15:05:46