Python或正则表达式和非空结果

时间:2015-07-19 07:48:01

标签: python regex

我需要找到一个可以采用两种不同形式的子字符串:

>>> test = '348249432'
>>> x = re.findall("([2][0][0-9]{7})|([3][0-9]{8})", test)
>>> x
[('', '348249432')]

我怎么能要求Python不返回空字符串,只给我一个可以匹配的结果?

1 个答案:

答案 0 :(得分:4)

findall返回已捕获的群组,在documentation

中说明
  

如果模式中存在一个或多个组,则返回组列表;如果模式有多个组,这将是一个元组列表。 结果中包含空匹配,除非他们触及另一场比赛的开头

你想在一个捕获组中使用交替,我会把它写成:

>>> test = '348249432'
>>> re.findall("(20[0-9]{7}|3[0-9]{8})", test)
['348249432']