clo*_*d68 2 python regex string
我得到了这段代码:
myString = 'blabla123_01_version6688_01_01Long_stringWithNumbers'
versionSplit = re.findall(r'-?\d+|[a-zA-Z!@#$%^&*()_+.,<>{}]+|\W+?', myString)
for i in reversed(versionSplit):
id = versionSplit.index(i)
if i.isdigit():
digit = '%0'+str(len(i))+'d'
i = int(i) + 1
i = digit % i
versionSplit[id]=str(i)
break
final = ''
myString = final.join(versionSplit)
print myString
Run Code Online (Sandbox Code Playgroud)
这假设只增加给定字符串的最后一位数字.但是如果运行该代码,您将看到如果字符串中的数字与最后一个数字相同,那么如果您继续运行该脚本,它将一个接一个地增加它.任何人都可以帮我找出原因吗?
预先感谢您的任何帮助
你有没有理由不做这样的事情:
prefix, version = re.match(r"(.*[^\d]+)([\d]+)$", myString).groups()
newstring = prefix + str(int(version)+1).rjust(len(version), '0')
Run Code Online (Sandbox Code Playgroud)
笔记:
AttributeError.您可以重新构建它以抛出更合适或特定的异常(例如,如果re.match(...)返回None;请参阅下面的注释以获取更多信息).相应调整.