【发布时间】:2016-02-04 06:33:02
【问题描述】:
我只想替换传递给re.sub 的正则表达式的一部分([^\d+] 只是为了确保在此之后没有数字,即捕获整个整数(包含所有数字)) .但是,下面的代码会替换下一个字符(即在第一个示例中吞下下一个“”)。
import re
pattern = r'foo-%d[^\d+]'
k = 12 # only substitute entire "foo-12" occurrences
result = re.sub(pattern % k, '@foo-%d@' % k, 'dasds foo-12 gfd9843')
# got: result == '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-%d@' % 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-%d@' % k, 'dasds foo-11 gfd9843')
assert result == 'dasds foo-11 gfd9843', result
我该如何解决这个问题?我是否至少在正则表达式的正确轨道上?
【问题讨论】:
标签: python regex substitution