1
我想只替換傳入re.sub
的正則表達式的部分([^\d+]
只是爲了確保在此之後沒有數字,即整個整數(全部數字)被捕獲)。但是,下面的代碼會替換下一個字符(即在第一個示例中吞嚥下一個「」)。用re.sub替換正則表達式的一部分
import re
pattern = r'foo-%d[^\d+]'
k = 12 # only substitute entire "foo-12" occurrences
result = re.sub(pattern % k, '@foo-%[email protected]' % k, 'dasds foo-12 gfd9843')
# got: result == 'dasds @[email protected]'
assert result == 'dasds @[email protected] gfd9843', result
k = 1 # only substitute entire "foo-1" occurrences
result = re.sub(pattern % k, '@foo-%[email protected]' % k, 'dasds foo-12 gfd9843')
assert result == 'dasds foo-12 gfd9843', result
k = 1 # only substitute entire "foo-1" occurrences
result = re.sub(pattern % k, '@foo-%[email protected]' % k, 'dasds foo-11 gfd9843')
assert result == 'dasds foo-11 gfd9843', result
我該如何解決這個問題?我是否至少在正則表達式的正確軌道上?
不知道什麼'\ B'做,但是'+'不起作用。看到我添加的測試用例。 – orange
@orange sry'+'不需要......現在就試試 – vks