我想使用re.sub
使用否定将'1213'更改为'1x13'。语法应该更改1后面的任何字符,但前提是该字符不是3。
我能得到的最佳输出是1x213。但那2仍然存在。
FWIW,我明白了:
print(re.sub(r'1(?!3)', '1x', '1213'))
什么是正确的语法?
答案 0 :(得分:3)
我相信你只想要:
print(re.sub(r'1[^3]', '1x', '1213'))
模式1[^3]
匹配任何1
后跟括号中的字符类,其中^
仅表示其为否定类。
答案 1 :(得分:2)
使用否定的字符类和正面的后视:
In [45]: re.sub('(?<=1)[^3]', 'x', s)
Out[45]: '1x13'
[^3]
将匹配除3和(?<=1)
之外的所有字符,确保您的字符跟随1。