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游戏开发入门

你也能动手修改C编译器

纸牌游戏开发

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



版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/caimouse/article/details/78169385

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:37
  • 1142

python 正则表达式 重复匹配

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

Python-正则表达式多次匹配

要点要查找所有匹配项,用findall函数。
  • u013344915
  • u013344915
  • 2016-11-07 22:50:42
  • 3307

正则表达式的重复匹配问题

两种方法在使用正则表达式时有时我们需要对特定的表达式进行重复,一般有两种方法: 1. {N} 使用大括号表示匹配前面出现的正则表达式N次,用于连续的重复匹配,例如\d{3}可匹配567。 2. ...
  • firber
  • firber
  • 2016-12-12 23:02:51
  • 1368

正则表达式:字符串中连续重复字符串的识别和替换

今天编程的时候遇到一个正则表达式查找和替换的问题:对于字符串连续出现的字符,用“(重复字符)”替换。我想到用正则表达式比较高效。 对于字符串中的连续重复的字符,正则表达式是:(.)\1+以下是程序的片...
  • whbing1471
  • whbing1471
  • 2016-12-20 21:25:48
  • 5298

正则表达式(三)-- 重复匹配

一、匹配一个或多个字符 使用单个元字符'.'或者其他元字符如'\d'只能匹配单个的字符,而有时我们需要匹配同一字符或者字符集合的多次重复,比如要匹配的文本中有很多数字(假设没有其他字符与数字混合的情...
  • BestFSQ
  • BestFSQ
  • 2017-02-23 21:35:50
  • 2138

Python中使用中文正则表达式匹配指定的中文字符串

业务场景如下: 从中文字句中匹配出指定的中文子字符串
  • tao_627
  • tao_627
  • 2016-03-30 22:26:49
  • 19718

Python中正则表达式的匹配规则

下面是Python中正则表达式的一些匹配规则,图片资料来自CSDN:
  • qq_32616315
  • qq_32616315
  • 2017-10-09 22:54:18
  • 343

python︱numpy、array——高级matrix(替换、重复、格式转换、切片)

先学了R,最近刚刚上手python,所以想着将python和R结合起来互相对比来更好理解python。最好就是一句python,对应写一句R。 python中的numpy模块相当于R中的matirx矩...
  • sinat_26917383
  • sinat_26917383
  • 2016-08-23 15:46:21
  • 16385

正则表达式-连续多位相同字符判断的正则表达式

1. ([0-9])\1{5} 或 ([\d])\1{5} 连续相同的6位数字 如:333333 ([0-9a-zA-Z])\1{5}   连续相同的6位数字或字母 如:222222 cccccc ...
  • xiliang_pan
  • xiliang_pan
  • 2017-05-10 14:03:22
  • 5736
收藏助手
不良信息举报
您举报文章:python里使用正则表达式的重复模式
举报原因:
原因补充:

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