假设我有一个电话号码:
MANIFEST.in
我想捕获电话号码中的所有号码,即310-5984
。我可以通过两个捕获组来做到这一点:
3105984
可以通过一个捕获组获取完整的号码吗?我尝试做类似的事情:
>>> re.match(r'(?P<num_1>\d+)-(?P<num_2>\d+)', '310-5984').groupdict()
{'num_1': '310', 'num_2': '5984'}
但是它也在消耗分隔符。如何“使用”分隔符而不将其捕获到组中?还是用正则表达式不可能?
答案 0 :(得分:2)
您可以尝试将re.sub
与回调函数一起使用,例如
def callback(m):
return m.group(1) + m.group(2)
phone = "310-5984"
number = re.sub('\\b(\d+)-(\d+)\\b', callback, phone)
print(number)
此打印:
3105984
回调函数使您可以执行附加步骤,其中涉及从对re.sub
的调用中获得的所有捕获组。在这种情况下,我们只是将它们组合在一起。