免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3096 | 回复: 1
打印 上一主题 下一主题

python 正则寻找连续的字符串 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-11-28 22:56 |只看该作者 |倒序浏览
  1. s='99669999996669999996699666699666999966699666699'
复制代码
现在想匹配到
  1. ['99', '66', '999999', '666', '999999', '66', '99', '6666', '99', '666', '9999', '666', '99', '6666', '99']
复制代码
也就是所有的连续字符。
这个是我的代码,感觉麻烦了
  1. import re
  2. s='99669999996669999996699666699666999966699666699'
  3. p=re.compile(r'(.)(\1*)')
  4. l=p.findall(s)  #l=[('9', '9'), ('6', '6'), ('9', '99999'), ('6', '66'), ('9', '99999'), ('6', '6'), ('9', '9'), ('6', '666'), ('9', '9'), ('6', '66'), ('9', '999'), ('6', '66'), ('9', '9'), ('6', '666'), ('9', '9')]  匹配了开头,跟接下来连续的字符

  5. li=[]  #现在将每个开头与连续的部分合并
  6. for i in l:
  7.     i=''.join(i)
  8.     li.append(i)

  9. li   #li就是结果
复制代码
抛砖引玉,应该有一个正则就搞定的方法

论坛徽章:
0
2 [报告]
发表于 2011-11-29 00:36 |只看该作者
一定要用正则么?
t =  l = '99669999996669999996699666699666999966699666699'[0]
for i in '99669999996669999996699666699666999966699666699':
    if cmp(l,i) != 0:
        ret.append(t)
        print t
        t = l = i
        continue
    t += i
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP