Python:替换所有字母数字子字符串实例,不包括高阶数字

时间:2019-04-02 15:49:07

标签: python regex replace

使用re.sub,我试图查找并替换字母数字子字符串(例如,run1)的所有实例,但数字是高阶数字(例如,run12)的子字符串的实例除外。

我认为在(?<![0-9])后面进行查找会阻止“ run12”匹配,但是我对它的用法并不熟悉,并且可能使用不正确。

import re

mystring = '/mypath/run1/run12_run1_file.txt'
mynewstring = re.sub(r'run1(?<![0-9])',r'run2',mystring)
print mynewstring

理想情况下,它将返回:

/mypath/run2/run12_run2_file.txt

相反,它不匹配任何内容并返回:

/mypath/run1/run12_run1_file.txt

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

您应该使用负向前行而不是负向后行,因为您要避免匹配后面跟着数字的run1

mynewstring = re.sub(r'run1(?!\d)', 'run2', mystring)