使用regex替换长字符串

2024-09-29 17:22:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我想把绳子换掉

ID12345678_S3_MPRAGE_ADNI_32Ch_2_98_clone_transform_clone_reg_N3Corrected1_mask_cp_strip_durastripped_N3Corrected_clone_lToads_lesions_seg

ID12345678

如何通过regex替换?你知道吗

我试过了-没用。你知道吗

import re
re.sub(r'_\w+_\d_\d+_\w+','')

谢谢


Tags: res3clonetransformmaskregcpstrip
2条回答

我猜第一部分是可变的

import re
s = "ID12345678_S3_MPRAGE_ADNI_32Ch_2_98_clone_transform_clone_reg_N3Corrected1_mask_cp_strip_durastripped_N3Corrected_clone_lToads_lesions_seg"
print re.sub(r'_.*$', r'', s)

您可以将re.sub与模式[^_]*一起使用,该模式匹配文本中不包含_的任何子字符串,并且作为re.sub替换第一个匹配的模式,您可以在这种情况下使用它:

>>> 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'

但如果它可能出现在字符串中的任何位置,则可以使用re.search如下所示:

>>> 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'

但是如果没有regex,您可以使用split()

>>> s.split('_',1)[0]
'ID12345678' 

相关问题 更多 >

    热门问题