擅长:python、mysql、java
<p>我还可以建议使用一种更严格的模式<code>re.findall</code>:</p>
<pre><code>re.findall(r'(\w+)\[(\d+)]', s)
</code></pre>
<p>参见<a href="http://ideone.com/a53Sh9" rel="nofollow">Python demo</a></p>
<p>或<code>zip</code>的变体:</p>
<pre><code>import re
s = 'li[10] li[11]'
names, ids = zip(*re.findall(r"(\w+)\[(\d+)]", s))
print(names)
print(ids)
</code></pre>
<p>见<a href="http://ideone.com/KICcfk" rel="nofollow">another Python demo</a></p>
<p>细节:</p>
<ul>
<li><code>(\w+)</code>-组1捕获一个或多个字母、数字或下划线</li>
<li><code>\[</code>-a <code>[</code>文字符号</li>
<li><code>(\d+)</code>-第2组捕获一个或多个数字</li>
<li><code>]</code>-结束文字<code>]</code>符号</li>
</ul>