Python 仅替换re.sub中的部分正则表达式

Python 仅替换re.sub中的部分正则表达式,python,regex,substitution,Python,Regex,Substitution,我只想替换传递到re.sub中的部分正则表达式([^\d+]只是为了确保后面没有数字,即捕获整个整数(包含所有数字)。但是,下面的代码替换下一个字符(即在第一个示例中吞下下下一个“”) 我怎样才能解决这个问题?我使用正则表达式至少是正确的吗?在这里使用\b import re k = 12 # only substitute entire "foo-12" occurrences s = 'dasds foo-12 gfd9843' result = re.sub(r'foo-%d\b' % k

我只想替换传递到
re.sub
中的部分正则表达式(
[^\d+]
只是为了确保后面没有数字,即捕获整个整数(包含所有数字)。但是,下面的代码替换下一个字符(即在第一个示例中吞下下下一个“”)


我怎样才能解决这个问题?我使用正则表达式至少是正确的吗?

在这里使用
\b

import re
k = 12 # only substitute entire "foo-12" occurrences
s = 'dasds foo-12 gfd9843'
result = re.sub(r'foo-%d\b' % k, '@foo-%d@' % k, s)

# got: result == 'dasds @foo-12@gfd9843'
assert result == 'dasds @foo-12@ gfd9843', result


k = 1 # only substitute entire "foo-1" occurrences
result = re.sub(r'foo-%d\b' % k, '@foo-%d@' % k, s)
assert result == 'dasds foo-12 gfd9843', result

在此处使用
\b

import re
k = 12 # only substitute entire "foo-12" occurrences
s = 'dasds foo-12 gfd9843'
result = re.sub(r'foo-%d\b' % k, '@foo-%d@' % k, s)

# got: result == 'dasds @foo-12@gfd9843'
assert result == 'dasds @foo-12@ gfd9843', result


k = 1 # only substitute entire "foo-1" occurrences
result = re.sub(r'foo-%d\b' % k, '@foo-%d@' % k, s)
assert result == 'dasds foo-12 gfd9843', result

不确定
\b
做什么,但
+
不起作用。请参阅我添加的测试用例。@orange sry
+
不需要…立即尝试不确定
\b
做了什么,但
+
不起作用。请参阅我添加的测试用例。@orange sry
+
不需要…请立即尝试