擅长:python、mysql、java
<p>regexp中的<code>[]</code>不会对regexp进行分组。它用于指定字符类。</p>
<p>也许这会奏效-</p>
<pre><code>\w*/{0,10}
</code></pre>
<p>对于分组,只需使用<code>()</code></p>
<pre><code>(\w*/){0,10}
</code></pre>
<p><strong>编辑</strong></p>
<p>基于您编辑的问题,我认为您需要的是0-3次目录名匹配,然后一个文件名也匹配。</p>
<p>假设文件名中只有字母(并且可选的扩展名不超过三个字符)</p>
<pre><code>^((?:[:\w]+/){0,3})(\w+(?:\.\w{1,3})?)?$
</code></pre>
<p>这个很大,但可以分成两部分</p>
<p>这是你已经有的</p>
<pre><code>((?:[:\w]+/){0,3})
</code></pre>
<p>还有我要补充的</p>
<pre><code>(\w+(?:\.\w{1,3})?)?
</code></pre>
<p>这是结尾的可选文件名。(如果不是可选的,可以删除最后一个<code>?</code>)。文件名本身可以只由字母组成,也可以有最多3个字符的扩展名</p>
<p>添加<code>^</code>和<code>$</code>将停止虚假匹配</p>
<pre><code>>>> pat=re.compile('^((?:[:\w]+/){0,3})(\w+(?:\.\w{1,3})?)?$')
>>> my_str='fwefw/wfwf/wefwf/dde.cdf'
>>> pat.search(my_str).groups()
('fwefw/wfwf/wefwf/', 'dde.cdf')
>>> my_str='fwefw/dde.cdf'
>>> pat.search(my_str).groups()
('fwefw/', 'dde.cdf')
</code></pre>