【发布时间】:2015-02-10 15:36:44
【问题描述】:
我在http://regexpal.com/ 上测试了以下代码,它与我想要的字符串正确匹配。我想找到出现在 4 块中的 16 位数字,中间有一个空格,所以我写了以下正则表达式:
\d{4}(\s\d{4}){3}
即匹配 4 个数字,然后匹配三个重复的空格组,后跟四个数字。在正则表达式上,这正确匹配:
test1234 消息1234 5678 1234 5678
然而,在 Python 中,我运行以下代码:
>>> import re
>>> p = re.compile('\d{4}(\s\d{4}){3}')
>>> p.findall('test1234 message1234 5678 1234 5678')
[' 5678']
>>>
我不明白为什么它与“5678”的第二个实例匹配,以及为什么它与我预期的数字块不匹配。
【问题讨论】: