擅长:python、mysql、java
<p>如果希望括号仅在双大括号内进行,则需要如下所示:</p>
<pre class="lang-py prettyprint-override"><code>re.sub(r'({{\s*)([^}]*-d)(\s*}})', r'\1(\2)\3', s)
</code></pre>
<p>把它分解一下:</p>
^{pr2}$
<p>替换的<code>r'\1(\2)\3'</code>只是用
中间的圆括号。在</p>
<p>组合起来:</p>
<pre class="lang-py prettyprint-override"><code>import re
def quote_string_d(s):
return re.sub(r'({{\s*)([^}]*-d)(\s*}})', r'\1(\2)\3', s)
print(quote_string_d("this is my {{string-d}}"))
print(quote_string_d("this is my second{{ new_string-d }}"))
print(quote_string_d("this should not be quoted other_string-d "))
</code></pre>
<p>输出:</p>
<pre class="lang-py prettyprint-override"><code>this is my {{(string-d)}}
this is my second{{ (new_string-d) }}
this should not be quoted other_string-d
</code></pre>
<p>注意第三个实例没有得到括号,因为它不在<code>{{ }}</code>内。在</p>