import re
ip6 = "1234:0678:0000:0000:00cd:0000:0000:0000"
zeroes = re.search("(:?0000)+", ip6)
print zeroes.group(0)
:0000:0000
我试图找到由冒号分隔的四个零组成的最长序列。该字符串包含三个这样的组的序列,但只打印了两个组。为什么?
编辑:它正在打印 :0000:0000 因为那是字符串中的第一个 匹配项——但我认为正则表达式总是寻找最长 匹配项?
最佳答案
答案已更新为适用于 Python 2.6:
p = re.compile('((:?0000)+)')
longestword = ""
for word in p.findall(ip6):
if len(word[0])>len(longestword):
longestword = word[0]
print longestword
关于Python re.search()不返回完整的组匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8539092/