1

文字列内の最後の数字 (1 桁ではない) を見つけて、number+1たとえば/path/testcase9.into に置き換える必要があり/path/testcase10.inます。Pythonでこれをよりうまくまたは効率的に行う方法は?

これが私が今使っているものです:

reNumber = re.compile('(\d+)')

def getNext(path):
    try:
        number = reNumber.findall(path)[-1]
    except:
        return None
    pos = path.rfind(number)
    return path[:pos] + path[pos:].replace(number, str(int(number)+1))

path = '/path/testcase9.in'
print(path + " => " + repr(self.getNext(path)))
4

2 に答える 2

3
LAST_NUMBER = re.compile(r'(\d+)(?!.*\d)')

def getNext(path):
    return LAST_NUMBER.sub(lambda match: str(int(match.group(1))+1), path)

これはre.sub、特に、「置換」を元の一致で呼び出される関数にして、それを置き換えるものを決定する機能を使用します。

また、否定先読みアサーションを使用して、正規表現が文字列の最後の数字のみと一致するようにします。

于 2013-04-21T03:14:43.727 に答える