擅长:python、mysql、java
<p>如果找到两个以上的匹配项,则拆分字符串并仅替换模式。你知道吗</p>
<pre><code>>>> replace = lambda s, pat, sub: "".join([x + sub for x in s.split(pat) if x]) if len(s.split(pat))>2 else s
>>> replace("abcdefghcd", "cd", "k")
'abkefghk'
>>> replace("123*45", "*", "u")
'123*45'
</code></pre>
<hr/>
<p>如果您喜欢显式函数(推荐)而不是一行:</p>
<pre><code>def replace(s, pat, sub, occ=2):
"""Return a string of replaced letters unless below the occurrences."""
if len(s.split(pat)) > occ:
return "".join([x + sub for x in s.split(pat) if x])
return s
</code></pre>