擅长:python、mysql、java
<p>您可以使用此正则表达式,前提是这些符号仅在单词字符之前使用:</p>
<pre><code>(?:]\B[@#$:]\w+[^@#$:]*){5}
</code></pre>
<p><a href="https://regex101.com/r/clCwZV/1" rel="nofollow noreferrer">RegEx Demo</a></p>
<p><strong>代码:</strong></p>
<pre><code>>>> arr = ['@someword someotherword anotherword word1 word2 word3',
'@someword :someotherword #anotherword $word1 word2 word3',
'@someword :someotherword #anotherword $word1 #word2 $word3']
>>> reg = re.compile(r'(?:\B[@#$:]\w+[^@#$:\n]*){5}');
>>> for i in arr:
... print(reg.findall(i))
...
[]
[]
['@someword :someotherword #anotherword $word1 #word2 ']
</code></pre>
<ul>
<li><code>\B</code>:匹配<code>\b</code>不匹配的地方</li>
<li><code>[@#$:]\w+</code>:匹配1+个以<code>[@#$:]</code>开头的单词字符</li>
<li><code>[^@#$:]*</code>:匹配0个或多个不包含<code>[@#$:]</code>的字符</li>
<li><code>(...){5}</code>:在当前输入中匹配5</li>
</ul>