我有多个以ds开头的字符串。
对于例如。
ds000002_R2.0.2_raw.zip
ds000002_R2.0.3_raw.zip
ds000002_R2.0.4_raw.zip
ds000002_R2.0.5_raw.zip
ds000003_R2.0.0_raw.tgz
ds000003_R2.0.1_raw.tgz
ds002_raw_checksums.txt
ds003_models.tgz
ds113c_R1.0.0_sub-18.tgz
ds113c_R1.0.0_sub-20.tgz
ds113c_R1.0.0_sub-21.tgz
ds113b_raw.tgz
如何只提取ds***
前面的数字?
所以理想的输出应该是,000002, 000005, 003, 002, 113b, 113c
等
编辑:我想得到的字母太后,如果有任何之间的ds
和之前_
或.file_extension
5条答案
按热度按时间yzckvree1#
试试这个.
结果:
https://i.stack.imgur.com/ZIGOO.jpg
iszxjhcz2#
你可以在
re
中尝试ds([0-9A-Za-z]+)
和findall()
函数,因为_
和.
都不属于字符类[0-9A-Za-z]
,组模式匹配将在_
或.
结束:xcitsw883#
avwztpqn4#
您可以使用
(?mi)(?<=^ds)([a-z0-9])+
匹配ds
后面的任何数字或字母。我假设ds
总是在一行的开头,并且你有一个多行字符串要搜索。请参阅regex和ideone演示。
输出
['000002', '000002', '000002', '000002', '000003', '000003', '002', '003', '113c', '113c', '113c', '113b', '110']
lztngnrs5#
试试这个:
演示:https://regex101.com/r/sElqQg/2