<p><code>r'[+\-*/]'</code>正则表达式与换行符不匹配,因此您的<code>'\n': 'rep2'</code>将不会被使用。否则,将<code>\n</code>添加到regex:<code>r'[\n+*/-]'</code>。你知道吗</p>
<p>接下来,您将得到<code>None</code>,因为您的正则表达式不包含任何<a href="http://www.regular-expressions.info/named.html" rel="nofollow noreferrer"><em>named capturing groups</em></a>,请参见<a href="https://docs.python.org/3/library/re.html#re.match.lastgroup" rel="nofollow noreferrer">^{<cd6>} docs</a>:</p>
<blockquote>
<p><strong><code>match.lastgroup</code></strong><br/>
The name of the last matched capturing group, or <strong><code>None</code> if the group didn’t have a name, or if no group was matched at all</strong>.</p>
</blockquote>
<p>要使用匹配进行替换,甚至不需要使用<code>re.finditer</code>,使用<code>re.sub</code>和lambda作为替换:</p>
<pre><code>import re
content = '''
Blah - blah \n blah * blah + blah.
'''
regex = r'[\n+*/-]'
my_dict = { '+': 'rep1', '\n': 'rep2'}
new_content = re.sub(regex, lambda m: my_dict.get(m.group(),""), content)
print(new_content)
# => rep2Blah blah rep2 blah blah rep1 blah.rep2
</code></pre>
<p>参见<a href="http://ideone.com/5Y83Tn" rel="nofollow noreferrer">Python demo</a></p>
<p><code>m.group()</code>获取<em>整个匹配</em>(整个匹配存储在<code>match.group(0)</code>)。如果您在模式中有一对未转义的圆括号,它将创建一个<a href="http://www.regular-expressions.info/brackets.html" rel="nofollow noreferrer">capturing group</a>,您可以使用<code>m.group(1)</code>等访问第一个圆括号</p>