python里使用正则表达式的重复模式

原创 2017年10月07日 14:14:20
在前面学习的正则表达式,都是把每一个字符写出来的,但是如果有重复的字符,也需要写出来吗?比如重复1000个字符,这时全写出来就不是很聪明的做法了,那么怎么办呢?可以使用某种规则来生成。如下面的例子:
#python 3. 6
#蔡军生 
#http://blog.csdn.net/caimouse/article/details/51749579
#
import re


def test_patterns(text, patterns):
    """Given source text and a list of patterns, look for
    matches for each pattern within the text and print
    them to stdout.
    """
    # Look for each pattern in the text and print the results
    for pattern, desc in patterns:
        print("'{}' ({})\n".format(pattern, desc))
        print("  '{}'".format(text))
        for match in re.finditer(pattern, text):
            s = match.start()
            e = match.end()
            substr = text[s:e]
            n_backslashes = text[:s].count('\\')
            prefix = '.' * (s + n_backslashes)
            print("  {}'{}'".format(prefix, substr))
        print()
    return


if __name__ == '__main__':
    test_patterns('abbaaabbbbaaaaa',
                  [('ab', "'a' followed by 'b'"),
                   ])
结果输出如下:

'ab' ('a' followed by 'b')


  'abbaaabbbbaaaaa'
  'ab'
  .....'ab'

这个例子的代码是方便来测试不同的正则表达式。

接着来测试一下重复的正则表达式:

#python 3. 6
#蔡军生 
#http://blog.csdn.net/caimouse/article/details/51749579
#
from re_test_patterns import test_patterns

test_patterns(
    'abbaabbba',
    [('ab*', '0个或多个b跟在a后面'),
     ('ab+', '1个或多个b跟在a后面'),
     ('ab?', '0个或1个b跟在a后面'),
     ('ab{3}', '只能3个b跟在a后面'),
     ('ab{2,3}', '2个到3个b跟a后面')],
)
结果输出如下:

'ab*' (0个或多个b跟在a后面)


  'abbaabbba'
  'abb'
  ...'a'
  ....'abbb'
  ........'a'


'ab+' (1个或多个b跟在a后面)


  'abbaabbba'
  'abb'
  ....'abbb'


'ab?' (0个或1个b跟在a后面)


  'abbaabbba'
  'ab'
  ...'a'
  ....'ab'
  ........'a'


'ab{3}' (只能3个b跟在a后面)


  'abbaabbba'
  ....'abbb'


'ab{2,3}' (2个到3个b跟a后面)


  'abbaabbba'
  'abb'
  ....'abbb'

深入浅出Numpy
http://edu.csdn.net/course/detail/6149 

Python游戏开发入门

http://edu.csdn.net/course/detail/5690

你也能动手修改C编译器

http://edu.csdn.net/course/detail/5582

纸牌游戏开发

http://edu.csdn.net/course/detail/5538 

五子棋游戏开发

http://edu.csdn.net/course/detail/5487
RPG游戏从入门到精通
http://edu.csdn.net/course/detail/5246
WiX安装工具的使用
http://edu.csdn.net/course/detail/5207
俄罗斯方块游戏开发
http://edu.csdn.net/course/detail/5110
boost库入门基础
http://edu.csdn.net/course/detail/5029
Arduino入门基础
http://edu.csdn.net/course/detail/4931
Unity5.x游戏基础入门
http://edu.csdn.net/course/detail/4810
TensorFlow API攻略
http://edu.csdn.net/course/detail/4495
TensorFlow入门基本教程
http://edu.csdn.net/course/detail/4369
C++标准模板库从入门到精通 
http://edu.csdn.net/course/detail/3324
跟老菜鸟学C++
http://edu.csdn.net/course/detail/2901
跟老菜鸟学python
http://edu.csdn.net/course/detail/2592
在VC2015里学会使用tinyxml库
http://edu.csdn.net/course/detail/2590
在Windows下SVN的版本管理与实战 
http://edu.csdn.net/course/detail/2579
Visual Studio 2015开发C++程序的基本使用 
http://edu.csdn.net/course/detail/2570
在VC2015里使用protobuf协议
http://edu.csdn.net/course/detail/2582
在VC2015里学会使用MySQL数据库
http://edu.csdn.net/course/detail/2672



版权声明:本文为博主原创文章,未经博主允许不得转载。

python核心编程-正则表达式之-重复、特殊字符、子组

#!/usr/bin/env python # -*- coding: UTF-8 -*-import repatt = '\w+@(\w+\.)?\w+\.com' m = re.match(pat...
  • youhaibo1990
  • youhaibo1990
  • 2016年01月12日 23:23
  • 1070

Python-正则表达式多次匹配

要点要查找所有匹配项,用findall函数。
  • u013344915
  • u013344915
  • 2016年11月07日 22:50
  • 2439

python 正则表达式 重复匹配

In [2]: ma=re.match(r')[\w]*python')   #\1代表前面括号内模式,重复匹配   In [3]: ma.group()   Out[4]: 'python' ...
  • jiasudu1234
  • jiasudu1234
  • 2017年04月19日 17:24
  • 1104

python中最常用的re正则表达式总结

import re x = re.search('r\D+a','123chenronghua') print(x.group()) s = re.search('r[a-z]+a','123chen...
  • weixin_41317950
  • weixin_41317950
  • 2018年01月09日 09:32
  • 25

正则表达式 匹配罗马数字 并且返回匹配到的值

正则 罗马数字
  • u013776081
  • u013776081
  • 2015年01月22日 10:19
  • 2737

正则表达式中问号的用法

1、需求背景 由于最近工作需要,要从网页链接中找到
  • maylorChao
  • maylorChao
  • 2014年05月28日 11:33
  • 5607

python正则表达式re模块详细介绍

python正则表达式re模块详细介绍 投稿:junjie 这篇文章主要介绍了python正则表达式re模块详细介绍,本文翻译自官方文档,并加入了自己的理解,需要的朋友可以参考下 ...
  • qi1840439776
  • qi1840439776
  • 2017年04月03日 11:14
  • 196

Python 正则表达式去除重复行

1. Sort lines and remove adjacent duplicates Match: (?m)^([\s\S]*)(?:(?:\r?\n|\r)\1)+$ Replace: \1 ...
  • guaguastd
  • guaguastd
  • 2014年08月21日 11:23
  • 664

Python3 正则表达式特殊符号及用法(详细列表)

Python3 正则表达式特殊符号及用法(详细列表) 正则表达式的强大之处在于特殊符号的应用,特殊符号定义了字符集合、子组匹配、模式重复次数。正是这些特殊符号使得一个正则表达式可以匹配字符串...
  • riba2534
  • riba2534
  • 2017年01月09日 14:20
  • 2337

正则表达式之字符边界

零宽与非零宽非零宽字符:能够匹配字符的(特殊)字符。如:\d会匹配一个数字,\s会匹配空白字符 零宽字符:不匹配字符,只标记位置(具体含义见下文)字符边界 表达式 表示含义 ^ 与字符...
  • chanmufeng
  • chanmufeng
  • 2017年01月06日 19:37
  • 1016
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:python里使用正则表达式的重复模式
举报原因:
原因补充:

(最多只允许输入30个字)