擅长:python、mysql、java
<p>您可以做的是定义一个<code>lambda</code>函数作为替换,并在字典中查找每个匹配项:</p>
<pre><code>import re
expression = '(1 & 2) & 3'
d = {1: '1', 2: '0', 3: '0'}
res = re.sub('(\d+)', lambda x: d[int(x.group(1))], expression)
#'(1 & 0) & 0'
eval(res)
# 0
</code></pre>
<hr/>
<p>如果表达式可能包含字典中不存在的整数,则可以调整如下内容:</p>
<pre><code>res = re.sub('(\d+)', lambda x: d.get(int(x.group(1)), '0'), expression)
</code></pre>