擅长:python、mysql、java
<p>您可以将<code>re.sub</code>与模式<code>[^_]*</code>一起使用,该模式匹配文本中不包含<code>_</code>的任何子字符串,并且作为<code>re.sub</code>替换第一个匹配的模式,您可以在这种情况下使用它:</p>
<pre><code>>>> s="ID12345678_S3_MPRAGE_ADNI_32Ch_2_98_clone_transform_clone_reg_N3Corrected1_mask_cp_strip_durastripped_N3Corrected_clone_lToads_lesions_seg"
>>> import re
>>> re.sub(r'([^_]*).*',r'\1',s)
'ID12345678'
</code></pre>
<p>但如果它可能出现在字符串中的任何位置,则可以使用<code>re.search</code>如下所示:</p>
<pre><code>>>> re.search(r'ID\d+',s).group(0)
'ID12345678'
>>> s="_S3_MPRAGE_ADNI_ID12345678_32Ch_2_98_clone_transform_clone_reg_N3Corrected1_mask_cp_strip_durastripped_N3Corrected_clone_lToads_lesions_seg"
>>> re.search(r'ID\d+',s).group(0)
'ID12345678'
</code></pre>
<p>但是如果没有regex,您可以使用<code>split()</code>:</p>
<pre><code>>>> s.split('_',1)[0]
'ID12345678'
</code></pre>