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

标签 python regex

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

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/

相关文章:

java - 正则表达式或用单个空格替换多个空格的方法

python - 如何每n秒运行一个函数而不中断其他代码?也许在后台运行?

python - 属性错误: 'NoneType' object has no attribute 'traverse'

python 正则表达式问题,?操作

python - 构建一个字符串并在终端 python 中运行它

regex - 使用SilverLight在RichTextBox上使用RegEx突出显示单词

Python内括号字符串解析

regex - 我如何使用 vim 替换所有匹配正则表达式的整行

python - 根据句子上下文检测单词 you 是主语还是宾语代词。

java - 使用正则表达式从文本文件中删除样式标签