擅长:python、mysql、java
<p>这似乎有效:</p>
<pre><code>>>> re.findall(r'\B#([^,\W]+)', '#This string cont#ains #four, and #only four #hashtags.')
['This', 'four', 'only', 'hashtags']
</code></pre>
<ul>
<li><strong><code>\B</code></strong>:匹配空字符串,但仅当它不在单词的开头或结尾时。这意味着<code>r'py\B'</code>匹配<code>'python'</code>,<code>'py3'</code>,<code>'py2'</code>,但不是{<cd6>},<code>'py.'</code>,或{<cd8>}。<code>\B</code>正好与<code>\b</code>相反,因此也受<code>LOCALE</code>和{<cd12>}的设置的影响。在</li>
<li><strong><code>\W</code></strong>:如果没有指定<code>LOCALE</code>和<code>UNICODE</code>标志,则匹配任何非字母数字字符;这相当于集合<code>[^a-zA-Z0-9_]</code>。对于LOCALE,它将匹配不在集合<code>[0-9_]</code>中的任何字符,并且对于当前语言环境,它没有定义为字母数字。如果设置了<code>UNICODE</code>,则这将匹配除<code>[0-9_]</code>加上Unicode字符属性数据库中分类为非字母数字的字符之外的任何字符。在</li>
</ul>