使用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
有什么建议吗?
答案 0 :(得分:2)
您应该使用负向前行而不是负向后行,因为您要避免匹配后面跟着数字的run1
:
mynewstring = re.sub(r'run1(?!\d)', 'run2', mystring)