python里使用正则表达式的详细模式(Verbose mode expression)

原创 2017年11月02日 16:41:19
在前面学习过的正则表达式都是紧凑格式的表示方式,当你写的正则表达式比较长,比较复杂时,发现经常会写错,或者很难维护,遇到这种情况怎么办呢?这个不用急,聪明的设计人员早已经想到这种情况了,提供了一种叫做详细模式(Verbose mode expression)。当你使用这种模式时,可以给正则表达式添加注释,这样在维护时就不会像看天书了,同时也可以添加额外的空格,进行对齐排版。紧凑模式的例子:
import re

address = re.compile('[\w\d.+-]+@([\w\d.]+\.)+(com|org|edu)')

candidates = [
    u'first.last@example.com',
    u'first.last+category@gmail.com',
    u'valid-address@mail.example.com',
    u'not-valid@example.foo',
]

for candidate in candidates:
    match = address.search(candidate)
    print('{:<30}  {}'.format(
        candidate, 'Matches' if match else 'No match')
    )


详细模式的修改之后:
#python 3.6
#蔡军生 
#http://blog.csdn.net/caimouse/article/details/51749579
#
import re

address = re.compile(
    '''
    [\w\d.+-]+       # username
    @
    ([\w\d.]+\.)+    # domain name prefix
    (com|org|edu)    # TODO: support more top-level domains
    ''',
    re.VERBOSE)

candidates = [
    u'first.last@example.com',
    u'first.last+category@gmail.com',
    u'valid-address@mail.example.com',
    u'not-valid@example.foo',
]

for candidate in candidates:
    match = address.search(candidate)
    print('{:<30}  {}'.format(
        candidate, 'Matches' if match else 'No match'),
    )

结果输出如下:
first.last@example.com          Matches
first.last+category@gmail.com   Matches
valid-address@mail.example.com  Matches
not-valid@example.foo           No match


参数解释:X    VERBOSE

该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。当该标志被指定时,在 RE 字符串中的空白符被忽略,除非该空白符在字符类中或在反斜杠之後;这可以让你更清晰地组织和缩进 RE。它也可以允许你将注释写入 RE,这些注释会被引擎忽略;注释用 "#"号 来标识,不过该符号不能在字符串或反斜杠之後。

深入浅出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正则表达式

总结的挺好,原文地址:http://www.cnblogs.com/fnng/archive/2013/05/20/3089816.html 什么是正则表达式 正则表达式是可以匹配文本...

[Python]网络爬虫(七):Python中的正则表达式教程

接下来准备用糗百做一个爬虫的小例子。 但是在这之前,先详细的整理一下Python中的正则表达式的相关内容。 正则表达式在Python爬虫中的作用就像是老师点名时用的花名册一样,是必不可少的...

Python正则表达式:如何使用正则表达式

正则表达式(简称RE)本质上可以看作一个小的、高度专业化的编程语言,在Python中可以通过re模块使用它。使用正则表达式,你需要为想要匹配的字符串集合指定一套规则,字符串集合可以包含英文句子、e-m...

【Python学习笔记】正则表达式

【根据廖雪峰python教程整理】 字符串是编程时涉及到的最多的一种数据结构,对字符串进行操作的需求几乎无处不在。比如判断一个字符串是否是合法的Email地址,虽然可以编程提取@前后的子...

【转载】Python正则表达式详解

原文地址:http://blog.csdn.net/whycadi/archive/2008/01/02/2011046.aspx 1.  Python正则式的基本用法1.1基本规则1.2重复1.2....

Python正则表达式指南

本文介绍了Python对于正则表达式的支持,包括正则表达式基础以及Python正则表达式标准库的完整介绍及使用示例。本文的内容不包括如何编写高效的正则表达式、如何优化正则表达式,这些主题请查看其他教程...

Python正则表达式

正则表达式是个魔鬼,也是个天使。在你没有掌握它之前,它是魔鬼,在你掌握它后,它是天使,但是,时 不时还是要跳出来,给你调皮捣蛋一番。 一个正则表达式就是由普通字符以及特殊字符组成的文字模式,...

python正则表达式

暑假学习python一些基础语法后,没有什么方向,小白准备开始探索爬虫了。正则表达式模式模式字符串使用特殊的语法来表示一个正则表达式:字母和数字表示他们自身。一个正则表达式模式中的字母和数字匹配同样的...

python正则表达式

# -*- coding: utf-8 -*-''' 正则表达式:是一些由字符和特殊符号组成的字符串, 它们描述了这些字符和字符的某种重复方式, 因此能够按照某种模式匹配一个有相似特征的字符串集合 P...

Python 正则表达式(模式匹配)

1.  Python正则式的基本用法1.1基本规则1.2重复1.2.1最小匹配与精确匹配1.3前向界定与后向界定1.4组的基本知识2.  re模块的基本函数2.1使用compile加速2.2 matc...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:python里使用正则表达式的详细模式(Verbose mode expression)
举报原因:
原因补充:

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