python中正确的表达式_python中如何正确使用正则表达式的详细模式(Verbose mode expression)...
简单介绍
正则表达式并不是Python的一部分。正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分强大。得益于这一点,在提供了正则表达式的语言里,正则表达式的语法都是一样的,区别只在于不同的编程语言实现支持的语法数量不同;但不用担心,不被支持的语法通常是不常用的部分。如果已经在其他语言里使用过正则表达式,只需要简单看一看就可以上手了。
下图展示了使用正则表达式进行匹配的流程:
正则表达式的大致匹配过程是:依次拿出表达式和文本中的字符比较,如果每一个字符都能匹配,则匹配成功;一旦有匹配不成功的字符则匹配失败。
引言
当大家写的正则表达式比较长,比较复杂时,发现经常会写错,或者很难维护,遇到这种情况怎么办呢?这个不用急,聪明的设计人员早已经想到这种情况了,提供了一种叫做详细模式(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,这些注释会被引擎忽略;注释用 "#"号 来标识,不过该符号不能在字符串或反斜杠之後。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。
相关文章:

ASP.NET中 RequiredFieldValidator(非空验证)的使用
ylbtech-ASP.NET-Control-Validator: RequiredFieldValidator(非空验证)的使用ASP.NET中 RequiredFieldValidator(非空验证)的使用。 1.A,运行效果返回顶部 登录 RequiredFieldValidator:非空验证重要的属性:1,ControlToValidate:要验证的控件…

5013.FortiGate企业级硬件防火墙Demo演示文档
FortiGate企业级硬件防火墙Demo演示文档 语言:英文类型:Demo大小:2MB格式:WEB摘要:和真实的硬件防火墙操作界面一模一样的,非常实用!可以通过这些界面了解到在配置硬件防火墙时需要配置哪些参数…

下拉列表JComboBox,列表框JList
1、下拉列表JComboBox public class Demo extends JFrame {public Demo() {setBounds(100, 100, 200, 100);setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);Container c getContentPane();c.setLayout(new FlowLayout()); // JComboBox cbbnew JComboBox();…

C语言中整型在计算机中的存储
一 . 整型的表示 1.字面值后面加上L(l)表示long长整型 2.字面值后面加上U(u)表示usigned整型值 3.十进制123 ... 4.八进制,以0开头,如0123,0754 ... 5.十六进制,以0x开头,如0xF32 ... 二 .整型的分类和表示范围 ch…

多个前端项目放在一个git好还是_前端工作流
没有规矩不成方圆,如果一个项目只有你一个人在维护,那么你不需要担心很多问题,因为你对它心知肚明,但同时一个人的力量无法支撑起来大型项目。更多时候,我们需要与其他人合作,共同把项目推进,这…

hadoop上的pageRank算法
简单的pageRank实现参考:http://wlh0706-163-com.iteye.com/blog/1397694 较为复杂的PR值计算以及在hadoop上的实现:http://deathspeeder.is-programmer.com/posts/31349.html pageRank算法的基本思想是:网页的热门程度依赖指向它的网页的热门…

【11平台天梯】【原理分析】11平台天梯原理分析
写作缘由 (Elo Ratings) ELO排名制度是当今对弈水平评估的公认的权威方法。它最初由物理学教授 Arpad Elo 创立,故命名为埃罗排名。埃罗排名最早应用于国际象棋和围棋,目前已广泛用于国际象棋、围棋、足球、篮球等运动。ELO算法先是在网游WOW取得了成功&…
PAT Basic 1072
1072 开学寄语 下图是上海某校的新学期开学寄语:天将降大任于斯人也,必先删其微博,卸其 QQ,封其电脑,夺其手机,收其 ipad,断其 wifi,使其百无聊赖,然后,净面、…

C语言中浮点型在计算机中的存储
一 . 浮点型的存储 在十进制中我们都学习过科学计数法,比如31.4可以用科学计数法表示就是3.14*10^1。浮点型同样是采取科学计数法进行表示的。在计算机中,以二进制数存储,如1011.10用科学计数法的方式可以写成1.01110*2^3,因为浮点…

object-c中管理文件和目录:NSFileManager使用方法
object-c中管理文件和目录:NSFileManager使用方法 对于NSFileManager,文件或目录是使用文件的路径名唯一标识的。每一个路径名都是一个NSString对象,它可以是相对路径名,也可以是完整路径名。 相对路径名是相对于当前目…

python实现ssh登录send_Python实现ssh批量登录并执行命令
局域网内有一百多台电脑,全部都是linux操作系统,所有电脑配置相同,系统完全相同(包括用户名和密码),ip地址是自动分配的。现在有个任务是在这些电脑上执行某些命令,者说进行某些操作,比如安装某些软件&…

传Exchange 15将于今年9月发布
Microsoft Exchange Conference (简称MEC)是微软公司所举办的有关Exchange Server软件的主题会议,但它在过去的十年间一直没有举行。今年的9月24-26日,微软将在佛罗里达州重新启动MEC并展示Exchange 15。根据ZDNet报道,…

Django进阶之session
基于cookie做用户验证时:敏感信息不适合放在cookie中 session依赖cookie session原理 cookie是保存在用户浏览器端的键值对 session是保存在服务器端的键值对 session服务端中存在的数据为: session {随机字符串1:{用户1的相关信息}随机字符…

python画美女代码_教你用python爬取网站美女图(附代码及教程)
我前几篇文章都是说一些python爬虫库的用法,还没有说怎样利用好这些知识玩一些好玩的东西。那我今天带大家玩好玩又刺激的,嘻嘻!对了,requests库和正则表达式很重要的,一定要学会!一定要学会!&a…
Python基础学习3
6 模块和包 (1) 命名以.py结尾的文件就是Python模块 Python的包就是一个文件夹,至少有还有一个__init__.py的文件 包中可以有文件夹,文件夹中可以有包 (2) 文件的导入 每使用一个变量名或者函数时,就需要导入另一个文件 例&#…

CSS伪类 选择器
一、伪类:active/*被激活的元素*/:focus/*拥有键盘输入焦点的元素*/ :hover/*鼠标悬浮在元素上方时*/ :link/*未被访问的链接*/ :visited/*已被访问的链接*/ :first-child/*元素的第一个子元素*/ :lang/*带有指定 lang 属性的元素*/ CSS执行顺序是:lvcha link :hove…

svn中的revert和update
svn中的revert和update今天有人问到revert和update的问题。刚开始还真被问住了。因为感觉revert和update都可以将本地的copy更新到以前的一个版本,会有什么不同呢?查了些资料,并做了个试验,终于发现了它们的不同。假设当前最新的版…

BOM 浏览器对象模型和DOM 文档对象模型
浏览器对象模型BOM 1. 浏览器对象模型介绍 BOM(Browser Object Model) 是指浏览器对象模型,是用于描述这种对象与对象之间层次关系的模型,浏览器对象模型提供了独立于内容的、可以与浏览器窗口进行互动的对象结构。BOM由多个对象组成,其中代表…

上交三月月赛[SJTU] 1106 sudoku
题目大意:给出一道数独题,判断该数独是否有解且有唯一解。 解题思路: 由前几题的难度得,此题的难度不会太过分,所以简单暴力就可以了,40ms用时一本满足。 简单地讲一下具体的实现,从左上开始从左…

C语言-三子棋游戏
C语言中用写头文件的方式写了一个三子棋游戏 1.测试函数text.c #define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h> #include<string.h> #include<stdlib.h> #include<time.h> #include"chess.h"void menu() {printf("*************…

取余运算怎么算_TensorFlow2.0(2):数学运算
点击“机器学习算法与Python实战”,“置顶”公众号重磅干货,第一时间送达TensorFlow2.0(1):基本数据结构——张量1 基本运算:(、-、*、/、//、%) 基本运算中所有实例都以下面的张量a、b为例进行:import tensorflow as …

xen二进制安装
需要几台机器做集群测试,目前只有一台机器所以用xen来虚拟化几台机器出来 系统: centos5.6 安装xen yum install kernel-xen xen修改grub /boot/grub/grub.conf将default1改为default0 default0 timeout5 splashimage(hd0,0)/grub/splash.xpm.gz hiddenmenu title CentOS (2.6.…
python模块之json,pickle
序列化是指把内存里的数据转变成字符串,以使其能保存到硬盘上或者通过网络输送到远程。 序列化的两个模块: json:只能把python中的int/str/list/tuple/dict类型的数据,可以在不同的语言之间传递数据。Python和JavaScript数据对应关系…

关于如何在pc端使用github
http://www.bcwhy.com/thread-17636-1-1.html转载于:https://www.cnblogs.com/glgl2424/archive/2013/03/13/2956944.html
Python爬虫1-Scrapy环境的安装
一. Scrapy环境的安装 1. Scrapy各平台支持情况 除了python3在Windows下不支持外,其余(Linux,Mac)均支持 2. 安装miniconda (1)建议使用Python2,用miniconda安装scrapy (2)miniconda时Python环境管理工…

汉字笔画数据_统计学原理 数据的预处理
数据审核数据审核—原始数据(raw data)完整性审核应调查的单位或个体是否有遗漏所有的调查项目或变量是否填写齐全准确性审核数据是否真实反映实际情况,内容是否符合实际数据是否有错误,计算是否正确等数据审核—二手数据(second hand data)适用性审核弄…

SqlServer时间函数的使用例子整理
为什么80%的码农都做不了架构师?>>> 整理SqlServer2008的时间函数如下: 1.获取系统时间 select getdate(); --2012-05-06 22:26:49.950 select current_timestamp; --2012-05-06 22:26:49.950 select getutcdate(); --20…

bzoj 4710 [Jsoi2011]分特产 组合数学+容斥原理
题面 题目传送门 解法 考虑容斥原理 显然,我们可以枚举有多少个人没有收到 然后就转化成一个组合问题了 假设现在有\(x\)个物品,\(n\)个人,可以有人没有被分到,那么分给这\(n\)个人的方案数为\(nx-1\choose n-1\) 然后就是分别计算…
Python爬虫2-GET_POST与开发者工具
一. GET_POST与开发者工具 1. 浏览器的基本工作规则 浏览器请求访问服务器,服务器返回数据 (1) 请求的格式 GET:长度不能大于2k参数明文显示在地址栏,不保密,通常用在查询请求 POST:长度可以很大,参数写…

springcloud是什么_阿里P8道出,入职阿里必会199道SpringCloud面试题,你能掌握多少?...
前言Spring Cloud 自 2016 年 1 月发布第一个 Angel.SR5 版本,到目前 2020 年 3 月发布 Hoxton.SR3 版本,已经历经了 4 年时间。这 4 年时间里,Spring Cloud 一共发布了 46 个版本,支持的组件数从 5 个增加到 21 个。Spring Cloud…