擅长:python、mysql、java
<p>在这里,您实际上不必依赖正则表达式。您可以<a href="https://stackoverflow.com/questions/678236/how-to-get-the-filename-without-the-extension-from-a-path-in-python">get the file name without extension</a>,然后使用<code>_</code>将其拆分为两部分,并得到最后一部分:</p>
<pre><code>import os
s = "20200702_abcd_ef_aed_usd_cdee_hgd.csv"
print( os.path.splitext(s)[0].split('_', 1)[-1] )
</code></pre>
<p>对于regex,您还可以尝试一种<code>re.sub</code>解决方案,该解决方案还可以确保仅从开始处删除数字+<code>_</code>:</p>
<pre><code>re.sub(r'^\d+_|\.[^.]*$', '', s)
</code></pre>
<p>或者,如果不需要进行数字检查:</p>
<pre><code>re.sub(r'^[^_]+_|\.[^.]*$', '', s)
</code></pre>
<p>见a<a href="https://ideone.com/28hg9J" rel="nofollow noreferrer">Python demo</a>和<a href="https://regex101.com/r/H6HPIU/2" rel="nofollow noreferrer">regex demo</a></p>
<p><strong>详细信息</strong></p>
<ul>
<li><code>^[^_]+_</code>-字符串的开头,除<code>_</code>之外的一个或多个字符</li>
<li><code>|</code>-或</li>
<li><code>\.[^.]*$</code>-<code>.</code>,除<code>.</code>之外的任何0个或多个字符,然后是字符串的结尾</李>
</ul>