擅长:python、mysql、java
<p>在我看来,正则表达式是你最明智的选择。如果您以前没有使用过它们,<a href="http://www.diveintopython.org/regular_expressions/index.html" rel="noreferrer">this</a>是一个很好的资源。有关Python的regex库的详细信息,请转到<a href="http://docs.python.org/library/re.html" rel="noreferrer">here</a>。</p>
<pre><code>import re
regex = re.compile("\x03(?:\d{1,2}(?:,\d{1,2})?)?", re.UNICODE)
</code></pre>
<p>regex搜索^C(在<a href="http://en.wikipedia.org/wiki/ASCII" rel="noreferrer">ASCII</a>中是\x03,您可以通过在命令行上执行chr(3)进行确认),然后可选地查找一个或两个[0-9]字符,然后可选地后跟一个逗号,然后再查找另一个或两个[0-9]字符。</p>
<p><strong>(?: ... )</strong>表示忘记存储括号中的内容(因为我们不需要反向引用它),<strong>?</strong>表示匹配0或1,<strong>{n,m}</strong>表示匹配前一组的n到m。最后,<strong>\d</strong>表示匹配[0-9]。</p>
<p>剩下的可以用我上面提到的链接解码。</p>
<pre><code>>>> regex.sub("", "blabla \x035,12to be colored text and background\x03 blabla")
'blabla to be colored text and background blabla'
</code></pre>
<p><em>混沌</em>的解决方案类似,但最终可能会吃掉最多两个数字,也不会删除任何可能挂起的松散字符(例如关闭colour命令的字符)</p>