我需要找到一个可以采用两种不同形式的子字符串:
>>> test = '348249432'
>>> x = re.findall("([2][0][0-9]{7})|([3][0-9]{8})", test)
>>> x
[('', '348249432')]
我怎么能要求Python不返回空字符串,只给我一个可以匹配的结果?
答案 0 :(得分:4)
findall
返回已捕获的群组,在documentation:
如果模式中存在一个或多个组,则返回组列表;如果模式有多个组,这将是一个元组列表。 结果中包含空匹配,除非他们触及另一场比赛的开头。
你想在一个捕获组中使用交替,我会把它写成:
>>> test = '348249432'
>>> re.findall("(20[0-9]{7}|3[0-9]{8})", test)
['348249432']