<p>你可以用</p>
<pre><code>re.sub(r'\s*\(+[^()]*\baddress.*', '', s, flags=re.S)
</code></pre>
<p><strong>细节</strong></p>
<ul>
<li><code>\s*</code>-0+空格</li>
<li><code>\(+</code>-1+<code>(</code>字符</li>
<li><code>[^()]*</code>-除<code>(</code>和<code>)</code>之外的任何0+字符</li>
<li><code>\b</code>-单词边界(<code>address</code>前面不能有其他字母、数字或下划线)</li>
<li><code>address</code>-一个单词</li>
<li><code>.*</code>-字符串末尾的任何0+个字符。你知道吗</li>
</ul>
<p>参见<a href="https://ideone.com/sBjfXJ" rel="nofollow noreferrer">Python demo</a>:</p>
<pre><code>import re
strs = [ 'This is a string ((X.address)) test', 'This is a string ((X address)) test', 'This is a string (X address) test', 'This is a string (X.address) test', 'This is a string ((X and Y and Z address)) test' ]
for s in strs:
print(s, '=>', re.sub(r'\s*\(+[^()]*\baddress.*', '', s, flags=re.S))
</code></pre>
<p>输出:</p>
<pre><code>This is a string ((X.address)) test => This is a string
This is a string ((X address)) test => This is a string
This is a string (X address) test => This is a string
This is a string (X.address) test => This is a string
This is a string ((X and Y and Z address)) test => This is a string
</code></pre>