擅长:python、mysql、java
<p>简而言之:没有</p>
<p>长话短说:</p>
<p>您可以使用<code>finditer</code>访问所有匹配项,然后手动执行大小写匹配。你知道吗</p>
<pre><code>tests = (
"11foo11",
"22Foo22",
"33foO33",
"44FOO44",
)
import re
foobar = "(?i)(foo)"
for teststr in tests:
replstr = "bar"
newchars = list(teststr)
for m in re.finditer(foobar, teststr):
mtext = m.group(1)
replchars = list(replstr)
for i, ch in enumerate(mtext):
if ch.isupper():
replchars[i] = replchars[i].upper()
newchars[m.start():m.end()] = replchars
print("Old: ", teststr, " New: ", ''.join(newchars))
</code></pre>