擅长:python、mysql、java
<p>你不需要去<code>re.findall</code>。只要<code>re.sub</code>就可以了</p>
<pre><code>>>> s = '''%na^me%
%name^%
%^name%'''
>>> m = re.sub(r'(?<=%)\^.*?(?=%)', r'Data', s)
>>> f = re.sub(r'(?<=%).*?\^(?=%)', r'DATA', m)
>>> print(f)
%na^me%
%DATA%
%Data%
</code></pre>
<p>更新:</p>
<pre><code>>>> m = re.sub(r'(?<=%)\^.*?(?=%)', r'Data', s)
>>> f = re.sub(r'(?<=%).*?\^(?=%)', r'DATA', m)
>>> j = re.sub(r'(?<=%).*?.\^..*(?=%)', r'datA', f)
>>> print(j)
%datA%
%DATA%
%Data%
</code></pre>
<p>如果你还想替换<code>%</code>,你可以试试这个</p>
<pre><code>>>> m = re.sub(r'%\^.*?%', r'Data', s)
>>> f = re.sub(r'%.*?\^%', r'DATA', m)
>>> j = re.sub(r'%.*?.\^..*%', r'datA', f)
>>> print(j)
datA
DATA
Data
</code></pre>