我怎样才能匹配整个正则表达式而不是子表达式

时间:2015-09-30 11:56:32

标签: python regex

说,我有以下regex来搜索一系列房间号码:

import re
re.findall(r'\b(\d)\d\1\b','101 102 103 201 202 203')

我想搜索第一个和最后一个数字相同的房间号码(101和202)。上面的代码给出了

['1','2']

对应于子表达式(\d)。但它如何能够返回像101和202这样的整个房间号?

1 个答案:

答案 0 :(得分:2)

import re
print [i for i,j in re.findall(r'\b((\d)\d\2)\b','101 102 103 201 202 203')]

print [i[0] for i in re.findall(r'\b((\d)\d\2)\b','101 102 103 201 202 203')]

您可以在此处使用list comprehension。您只需要房间号码,因此仅包含i。基本上re.findall会返回正则表达式中的所有群组。因此您需要2个群组。第一个是房间号,第二个用于匹配。所以我们只能提取2元组中的第一个。