python - 在字符串末尾增加一个数字

标签 python regex string list

我正在尝试解决一个问题,即在 string 的末尾添加 1。 这意味着:

1.abcd12会变成:abcd13

2.abcd099会变成abcd100

3.abcd01会变成abcd02

4.ddh^add@2204会变成ddh^add@2205

我的代码:

import re
def increment_string(strng):
    regex = re.compile(r'[0-9]')
    match = regex.findall(strng)
    
    nums = ''.join(match[-3:])
    
    add = int(nums)+1
    print(strng+str(add))
increment_string("abcd99")

代码给我这个输出:abcd099100 我不知道如何解决它:

最佳答案

[0-9]+$ 匹配字符串末尾的所有数字,并使用 re.sub 和一个可调用的替换参数:

import re
def increment_string(strng):
    return re.sub(r'[0-9]+$', lambda x: f"{str(int(x.group())+1).zfill(len(x.group()))}", strng)

print(increment_string("abcd99"))
# => abcd100
print(increment_string("abcd099"))
# => abcd100
print(increment_string("abcd001"))
# => abcd002

参见 Python demo

关于python - 在字符串末尾增加一个数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64632623/

相关文章:

python - 下载带有依赖的python包,无需安装

python - mkvirtualenv 给出权限被拒绝错误

正则表达式仅选择点,但前后不应有任何数字

java - 大括号内的正则表达式值

string - 将字符串传递给 C 函数

javascript - 在 JavaScript 中将字符串计算为数学表达式

python - Python 中独立性的卡方检验

python - 我需要在 Python 多处理环境中使用高效的共享字典

python - 使用 Python 的正则表达式

java - 验证输入 - 字符串