2024-04-23 08:22:50 发布
网友
我需要的是打包项目的资源文件并更改其版本号。我有一个工作的JS脚本,但我想用python实现它。在
所以,问题在于使用re.sub公司公司名称:
version = "2,3,4,5" modified_str = re.sub(r"(/FILEVERSION )\d+,\d+,\d+,\d+(\s)/g", version, str_text)
我知道由于使用了捕捉组,我的代码是不正确的。我试着做smth就像:
还是没有效果。救命啊!在
只是想总结一下(可能会对某人有所帮助):
我不得不修改*.rc文件中的4行,例如:
FILEVERSION 6,0,20,163 PRODUCTVERSION 6,0,20,163 ... VALUE "FileVersion", "6, 0, 20, 163" VALUE "ProductVersion", "6, 0, 20, 163"
对于前两行,我使用了frederichamidi给出的regexp(thx很多)。最后两个我又写了一个:
以及:
pass_1 = re.sub(regex_1, r"\1 " + v, source_text) v = re.sub(",", ", ", v) #replacing "x,y,v,z" with "x, y, v, z" pass_2 = re.sub(regex_2, r"\g<1>" + v + r"\2", pass_1)
干杯。在
这不是在python中生成多行正则表达式的方法。必须使用MULTILINE标志编译正则表达式:
regex = re.compile(r"\bFILEVERSION \d+,\d+,\d+,\d+\b", re.MULTILINE)
另外,由于使用的是re.sub(),因此如果不在替换字符串中再次指定它,则字符串的FILEVERSION部分将消失:
FILEVERSION
要匹配FILEVERSION之外的其他内容,请使用alternation引入capture group:
regex = re.compile(r"\b(FILEVERSION|FileVersion|PRODUCTVERSION|ProductVersion) \d+,\d+,\d+,\d+\b", re.MULTILINE)
然后可以使用backreference\1将捕获的表达式注入替换字符串:
\1
version = r"\1 2,3,4,5" modified_str = re.sub(regex, version, str_text)
只是想总结一下(可能会对某人有所帮助):
我不得不修改*.rc文件中的4行,例如:
对于前两行,我使用了frederichamidi给出的regexp(thx很多)。最后两个我又写了一个:
^{pr2}$以及:
干杯。在
这不是在python中生成多行正则表达式的方法。必须使用MULTILINE标志编译正则表达式:
另外,由于使用的是re.sub(),因此如果不在替换字符串中再次指定它,则字符串的
^{pr2}$FILEVERSION
部分将消失:要匹配
FILEVERSION
之外的其他内容,请使用alternation引入capture group:然后可以使用backreference
\1
将捕获的表达式注入替换字符串:相关问题 更多 >
编程相关推荐