Python re.search()不返回完整的组匹配

标签 python regex

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/

相关文章:

python - 如何在 python 中制作力导向图?

javascript - JavaScript 是否支持正则表达式中高于 0xFFFF 的 Unicode 范围?

javascript - 在 JavaScript 中用正则表达式替换字符串

python - Asyncio 和 multiprocessing.Process-如何传递协程?

python - PyCharm 导入 MySQL

regex - 找到一行末尾的任意字母,删除换行符而不替换目标

.net - 从 [regex] 类型加速器表达式中捕获命名组的 PowerShell 语法是什么?

java - 在 java 中的正则表达式上重复相同的模式?

python - django: 'python manage.py migrate' 花费数小时(和其他奇怪的行为)

python - 将 DataFrame 列类型从字符串转换为日期时间