weixin_45115418
weixin_45115418
采纳率83.3%
2020-11-04 14:26 阅读 134

正则表达式匹配指定内容

假如有一串字符串s= 'ab123ab2343ab8743ab34678ab2345671',每个“ab”后面的数字个数及大小没有规律,需要匹配到如下结果:

ab123,ab2343,ab8743,ab34678,ab2345671,有没有啥比较好的办法吗?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

6条回答 默认 最新

  • 已采纳
    qq_25376897 qq_25376897 2020-11-05 11:11

    # -*- coding: UTF-8 -*-
    import re
     
    s = 'ab12c3ab2df34g3ab87qwe43ab3we467c8ab234we5671'
    it = re.finditer(r"(ab)((?!ab).)*",s) 
    for match in it: 
        print (match.group() )

    点赞 1 评论 复制链接分享
  • annnzi annnzi 2020-11-04 15:03

    正则表达式ab[0-9]*

    点赞 1 评论 复制链接分享
  • qq_25376897 qq_25376897 2020-11-05 09:44

    (ab)((?!ab).)*

    点赞 1 评论 复制链接分享
  • weixin_45115418 weixin_45115418 2020-11-04 15:51

    老哥 假如是这样的呢“ab12c3ab2df34g3ab87qwe43ab3we467c8ab234we5671” 就是ab后面的一串字符里面既有数字也有字母 想匹配出这样的结果: ab12c3   ab2df34g3   ab87qwe43   ab3we467c8   ab234we5671

    点赞 评论 复制链接分享
  • weixin_45115418 weixin_45115418 2020-11-05 10:00

    你这个我试了 老哥 只能匹配到ab后面的一位字符呀

    s = 'ab12c3ab2df34g3ab87qwe43ab3we467c8ab234we5671'
    mo = re.findall(r'(ab)((?!ab).)*',s)
    print(mo)
    结果如下:
    [('ab', '3'), ('ab', '3'), ('ab', '3'), ('ab', '8'), ('ab', '1')]

     

    点赞 评论 复制链接分享
  • weixin_45115418 weixin_45115418 2020-11-05 12:28

    感谢老哥 我去了解下finditer()相关知识

    点赞 评论 复制链接分享

相关推荐