擅长:python、mysql、java
<p>尝试<code>(?::|;|=)(?:-)?(?:\)|\(|D|P)</code>。还没有广泛的测试,但似乎匹配正确的,而不是更多。。。</p>
<pre><code>In [15]: import re
In [16]: s = "Just: to :)) =) test :(:-(( ():: :):) :(:( :P ;)!"
In [17]: re.findall(r'(?::|;|=)(?:-)?(?:\)|\(|D|P)',s)
Out[17]: [':)', '=)', ':(', ':-(', ':)', ':)', ':(', ':(', ':P', ';)']
</code></pre>