Python正则表达式捕获字符串中的多个部分

Python正则表达式捕获字符串中的多个部分,python,regex,Python,Regex,我的字符串的格式总是track-a-b,其中a和b是整数。 例如: track-12-29 track-1-210 track-56-1 如何在python中从这些字符串中提取a和b?您将希望使用re.findall()捕获组: results = [re.findall(r'track-(\d+)-(\d+)', datum) for datum in data] 您需要将re.findall()用于捕获组: results = [re.findall(r'track-(\d+)-(\d+)

我的字符串的格式总是
track-a-b
,其中
a
b
是整数。
例如:
track-12-29

track-1-210

track-56-1


如何在python中从这些字符串中提取
a
b

您将希望使用
re.findall()
捕获组:

results = [re.findall(r'track-(\d+)-(\d+)', datum) for datum in data]

您需要将
re.findall()
用于捕获组:

results = [re.findall(r'track-(\d+)-(\d+)', datum) for datum in data]

如果只是一个字符串,我将使用split:

>>> s = 'track-12-29'
>>> s.split('-')[1:]
['12', '29']
如果它是一个多行字符串,我会使用相同的方法

>>> s = 'track-12-29\ntrack-1-210\ntrack-56-1'
>>> results = [x.split('-')[1:] for x in s.splitlines()]
[['12', '29'], ['1', '210'], ['56', '1']]

如果只是一个字符串,我将使用split:

>>> s = 'track-12-29'
>>> s.split('-')[1:]
['12', '29']
如果它是一个多行字符串,我会使用相同的方法

>>> s = 'track-12-29\ntrack-1-210\ntrack-56-1'
>>> results = [x.split('-')[1:] for x in s.splitlines()]
[['12', '29'], ['1', '210'], ['56', '1']]

到目前为止你有代码吗?你试过什么?到目前为止你有代码吗?您尝试过什么?是否有理由首选
split
?@blue\u zing avoid正则表达式容易出错,使用字符串方法(
str.split
等)通常更快、更容易理解。是否有理由首选
split
?@blue\u zing avoid正则表达式容易出错并使用字符串方法(
str.split
等)通常更快,更容易理解。