简单介绍

正则表达式并不是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,这些注释会被引擎忽略;注释用 "#"号 来标识,不过该符号不能在字符串或反斜杠之後。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

python中正确的表达式_python中如何正确使用正则表达式的详细模式(Verbose mode expression)...相关推荐

  1. js去el的map_转:el表达式获取map对象的内容 js中使用el表达式 js 中使用jstl 实现 session.removeattribute...

    原文链接: 总结: el表达式获取map对象的内容 后端: HashMap map1 = new HashMap(); map1.put("key1","lzsb&quo ...

  2. python问号表达式_python中的问号表达式

    我们知道C语句中存在问号表达式,例如下面: 1 a=2>1? 10: -10; 那么,Python脚本语言中是否也存在类似的问号表达式呢?答案是肯定的.而且存在两种方式. 方式1:使用if el ...

  3. python下载哪一个安装包_python中正确安装对应版本的包

    python在写机器学习的代码过程中,需要引入如numpy.matpoltlib.pandas等等等.有时候直接pip install+对应的包名并不能正确安装,或者安装后依旧会出现安装不完全的情况. ...

  4. python中字典列表元组_Python中的列表和元组

    python中字典列表元组 Lists and tuples are arguably Python's most versatile, useful data types. You will fin ...

  5. python中赋值语句的作用_python中return可以使用赋值语句吗?

    在python中,有各种不同类型的语句.一个python程序是由模块构成的;一个模块由一条或多条语句组成;每个语句由不同的表达式组成;表达式可以创建和操作对象.下面来看看python中的语句. 赋值语 ...

  6. python常用函数的用法_python中常用函数整理

    1.map map是python内置的高阶函数,它接收一个函数和一个列表,函数依次作用在列表的每个元素上,返回一个可迭代map对象. class map(object):""&qu ...

  7. python 正则 匹配任意字符串_python中正则匹配

    写代码时候,不管是爬虫,还是获取某些特定的资源,我们需要写正则表达式. 因为不常用,有些语法生疏.有时明明觉得自己的语法可以,可就是不行. 正则表达式是一种文本模式,包括普通字符(例如,a 到 z 之 ...

  8. python中sort函数字符串_python中的sort方法使用详解

    < Python树莓派编程>--3.3 Python入门 本节书摘来自华章出版社<Python树莓派编程>一书中的第3章,第3.3节,作者:[美]沃尔弗拉姆·多纳特(Wolfr ...

  9. python的算法是指_python中的算法

    算法定义 算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制.也就是说,能够对一定规范的输入,在有限时间内获得所要求的输 ...

最新文章

  1. python非贪婪、多行匹配正则表达式例子[转载]
  2. 6.虚拟机类加载机制
  3. 网络知识科普 | 你未必了解的DNS
  4. [原创]按键小精灵通用去广告破解补丁
  5. continue语句只用于循环语句中_Java之循环语句、条件判断语句(三目运算符)、break、continue...
  6. 521. Longest Uncommon Subsequence I - LeetCode
  7. 张量(tensor)的理解
  8. 【BZOJ4956】Secret Chamber at Mount Rushmore
  9. c语言课设代写一般多少钱_海南彩礼钱一般给多少 海南娶媳妇要多少钱
  10. 少儿C++编程如何入门
  11. python程序设计简明教程第二版答案_Python简明教程精编.pdf
  12. 紫书5-16UVa212
  13. 2019计算机专业英语国家线,2019英语一国家线多少
  14. 对于注塑模具设计的原则,这些核心你掌握了吗?
  15. 利用Mono-cecil实现.NET程序的重新签名,重新链接相关库的引用
  16. 简单聊聊什么是Sass、Pass和Iass?
  17. 真实场景的双目立体匹配(Stereo Matching)获取深度图详解
  18. c++ 反射_基于飞凌FETA40i-C核心板在光时域反射仪中的应用原理
  19. 数据分析---Fama-French三因子模型
  20. JAVA两个表相关联_java实现两张表的关联查询(非数据库语言)

热门文章

  1. 分布式一致性(共识)算法(Paxos,raft,ZAB)的一些总结
  2. 贪心:Jump Game 跳跃游戏
  3. 用递归来判断输入的字符串是否是回文
  4. 策略模式 极其简单的列子
  5. 50个顶级开源营销应用程序
  6. 生物信息大数据数据库(NCBI、EBI、UCSC、TCGA)
  7. 数据库打开报错: 值不能为空
  8. WebService客户端添加SOAPHeader信息
  9. php函数serialize()与unserialize()
  10. 在C#中使用代理的方式触发事件