擅长:python、mysql、java
<p>不确定它是否是“Pythonic”,但这个问题可以用正则表达式解决</p>
<pre><code>import re
def starkill(s):
s = re.sub(".{0,1}\\*{1,}.{0,1}", "", s)
return s
</code></pre>
<p>对于那些不熟悉正则表达式的人,我将把这个长字符串分解为:</p>
<p><strong>前缀</strong></p>
<pre><code>".{0,1}"
</code></pre>
<p>这指定我们希望替换的部分以任何字符的0或1开头。如果星星前面有一个字符,我们要替换它;否则,如果星号位于输入字符串的最开头,我们仍然希望表达式命中</p>
<p><strong>明星</strong></p>
<pre><code>"\\*{1,}"
</code></pre>
<p>这指定表达式中间必须包含星号字符,但也可以包含多个星号字符。例如,“a****b”仍然会流行,即使有四颗星。我们需要在星号之前加一个反斜杠,因为正则表达式将星号作为保留字符,而在<em>之前加一个反斜杠,因为Python字符串保留反斜杠字符</p>
<p><strong>后缀</strong></p>
<pre><code>.{0,1}
</code></pre>
<p>与前缀相同。表达式可以以任意字符的一或零结尾</p>
<p>希望有帮助</p>