擅长:python、mysql、java
<p>您需要在<code><<ALTER, variable =</code>和<code>>></code>内捕获一个或多个单词字符(字母数字,包括下划线),然后在<code>re.sub</code>方法替换参数中使用可调用的:</p>
<p>见<a href="https://ideone.com/oGx2mJ" rel="nofollow noreferrer">Python demo</a>:</p>
<pre class="lang-py prettyprint-override"><code>import re
ParameterDictionary = {'Ion1': 'Na', 'Value1': '1.0'}
line = 'Text1 <<ALTER, variable = Ion1>> Text2 <<ALTER, variable = Value1>>\n'
rx = r'<<ALTER, variable = (\w+)>>'
result = re.sub(rx, lambda x: ParameterDictionary.get(x.group(1), x.group()), line)
print(result)
# => Text1 Na Text2 1.0
</code></pre>
<p>这里,</p>
<ul>
<li><code><<ALTER, variable = (\w+)>></code>匹配<code><<ALTER, variable =</code>,空格,然后<code>(\w+)</code>将任何一个或多个单词字符捕获到组1中,然后<code>>></code>匹配</li>
<li>匹配项作为<code>x</code>传递到lambda表达式中的<code>re.sub</code>,并且<code>ParameterDictionary.get(x.group(1), x.group())</code>或者通过find键返回相应的值,或者返回整个匹配项(<code>x.group()</code>)</李>
</ul>