正则表达式—修饰符

正则表达式可以包含一些标志修饰符来控制匹配模式,用在正则表达式处理函数中的flag参数中,为可选参数。

(1) re.I 全写(re.IGNORECASE)

表示使匹配时,忽略大小

(2) re.M 全写(re.MULTILINE)

多行匹配,影响 ^ 和 $的行为

(3) re.S 全写(re.DOTALL)

使点(.)匹配包括换行在内的所有字符

(4) re.X 全写(re.VERBOSE)

这个模式下正则表达式可以是多行,忽略空白字符,并可以加入注释。

(5) 除以上标志外还有re.L和re.U,但不常用

(6) 可以通过使用运算符“|“来指定多个标志,表示同时生效。

如: re.I | re.M被设置成I和M标志,

content = 'My username is zeke999!'

re.search(r'zeke\d{3}', content, re.I | re.M)

Match对象的属性

(1)string 属性:

获取匹配时使用的字符串对象

>>> m = re.match(r'\d+','456abc')

>>> m.string

'456abc'

(2)re 属性:

匹配时使用的pattern对象,也就是匹配到内容的正则表达 式对象

>>> m

<_sre.SRE_Match object at 0x02C8FA68>

>>> m.re

<_sre.SRE_Pattern object at 0x02D4ECD0>

(3)pos属性:

该属性表示文本中正则表达式开始搜索的索引。值与Pattern.match()和Pattern.seach()方法中的同名参数相同

>>> m.pos

0

(4)endpos属性:

该属性表示文本中正则表达式结束搜索的索引。值与Pattern.match()和 Pattern.seach()方法中的同名参数相同

>>> m.endpos

6

(5)lastindex属性:

该属性表示最后一个被捕获的分组在文本中的索引。如果没有被捕获的分组,将为None

>>> m = re.match(r'a(b)(c)d','abcdef')

>>> m.lastindex

2

(6)lastgroup属性:

该属性表示最后一个被捕获的分组别名。如果这个分 组没有别名或者没有被捕获的分组,将为None。

(7)group([group1, ...]):

获得一个或多个分组截获的字符串;指定多个参数时将以元组形式返回。group1可以使用编 号也可以使用别名;编号0代表匹配的整个子串;默认返回group(0)

实例:group函数传多个参数

p = re.compile('(a(b)c)d')

m = p.match('abcd')

resTup = m.group(1,2,1)

print resTup

>>>('abc', 'b', 'abc')

(8)groups([default=None])

以元组形式返回全部分组截获的字符串。相当于调用group(1,2,…last)

(9)start([group=0])

返回指定的组截获的子串在string中的起始索引(子串第一个字符的索引)。默认为第0组,即整个字符串

(10)end([group=0])

返回指定的组截获的子串在string中的结束索引(子串最后一个字符的索引)。group默认值 为0,即整个字符串

(11)span([group])

该方法表示以元组的形式返回 (start(group), end(group)),即某个分组的匹配文字内容在被 匹配字符串的开始索引位置和结束索引位置

(12)expand(template)

将匹配到的分组代入template中然后返回。template中可以使用\id或\g<id>、\g<name> 引用分组,但不能使用编号0。\id与\g<id>是等价的;但\10将被认为是第10个分组,如果 你想表达\1之后是字符'0',只能使用\g<1>0。

m = re.search(r'(\w+)! (\w+) (\w+)','HMan! How finny!') #将匹配的结果带入 print m.expand(r'resut:\3 \2 \1')

>>> resut:finny How HMan

(13)groupdict([default=None])

该函数的作用是,将所有匹配到并且指定了别名的分组,以别名为key,匹配到的字串为value, 存于字典中,然后返回这个字典。如果表达式中未设置别名分组,就会返回一个空字典

>>> m = re.search(r'(?P<num>\d+)(\w+)','78fd')

>>> m.groupdict()

{'num': '78'}

最新文章

  1. 一起学习KenDo Mobile之一 建立一个简单的移动APP
  2. 关于高并发的aotomic
  3. ☀【CSS3】切换开关
  4. 金牌分析师助力 鲁泰A图谋再造一个“鲁泰”?_财经_中国网
  5. .NET中 DAL+IDAL+Model+BLL+Web是什么意思
  6. Silverlight学习(四) domainservice动态多条件查询
  7. Ubuntu启动、停止、重新启动MySQL,查看MySQL错误日志、中文编码错误
  8. 简单讨论一下 jQuery 事件
  9. Conscription poj3723(最大生成树)
  10. Linux的硬盘分区
  11. Tutorial: Create a Windows Machine Learning UWP application (C#)
  12. .net core 获取客户端ip
  13. 4面向对象(OOP)
  14. C#学习-方法
  15. 128、View 绘制流程 &amp; 自定义View
  16. 凯撒密码、GDP格式化输出、99乘法表
  17. .NET Core 微服务之grpc 初体验(干货)
  18. [LeetCode] 127. Word Ladder _Medium tag: BFS
  19. JMeter Ant Task 生成的*.jtl打开之后request和response data是空的,怎样让其不是空的呢?
  20. (转)SQL Server 2008无法修改表的解决办法

热门文章

  1. Leetcode 219. 存在重复元素 II
  2. 别再说你不会 ElasticSearch 调优了,都给你整理好了
  3. 【剑指offer】剪绳子
  4. windows 安装 scrapy (python3.7)
  5. 如何申请腾讯地图用户Key
  6. excel 使用
  7. matlab利用m_map工具包画中国地图及散点云图
  8. [SOJ #721]第三送分题(2019-11-14考试)/[CF675E]Trains and Statistic
  9. Linux中常用命令pipe
  10. java基础 抽象