regefindall()在Regex表达式

时间:2016-09-19 07:03:12

标签: python

我似乎得到了我不希望存储到此数组中的其他变量。运行以下代码后我希望返回的是

[('999-999-9999'), ('999 999 9999'), ('999.999.9999')]

然而,我最终得到的是以下

[('999-999-9999', '-', '-'), ('999 999 9999', ' ', ' '), ('999.999.9999', '.', '.')]

以下是我所拥有的

teststr = '''
    Phone: 999-999-9999,
           999 999 9999,
           999.999.9999
'''
phoneRegex = re.compile(r'(\d{3}(-|\s|\.)\d{3}(-|\s|\.)\d{4})')

regexMatches = phoneRegex.findall(teststr)
print(regexMatches)

1 个答案:

答案 0 :(得分:3)

将内部捕捉组转为非捕捉组。

(?:-|\s|\.)

[-\s.]

示例:

>>> import re
>>> teststr = '''
    Phone: 999-999-9999,
           999 999 9999,
           999.999.9999
'''
>>> re.findall(r'\b(\d{3}[-.\s]\d{3}[.\s-]\d{4})\b', teststr)
['999-999-9999', '999 999 9999', '999.999.9999']
>>>