一、python中的re模块

import re # 导入re模块

二、re.S与re.M的区别

1. re.S表示单行匹配模式

2. re.M表示多行匹配模式

三、案例演示

1. re.M多行匹配

import restring = '''
hate is a beautiful feel
love you very much
love she
love her
'''pattern = re.compile(r'^love',re.M) # re.M 多行模式
ret = pattern.findall(string)print(ret) # ['love', 'love', 'love']

2. re.S单行匹配

import restring = '''<div>沁园春-雪
北国风光
千里冰封
万里雪飘
望长城内外
惟余莽莽
大河上下
顿失滔滔
山舞银蛇
原驰蜡象
欲与天公试比高
</div>'''pattern = re.compile(r'^<div>(.*?)</div>',re.S) # re.S 单行模式
ret = pattern.findall(string)print(ret) # ['沁园春-雪\n北国风光\n千里冰封\n万里雪飘\n望长城内外\n惟余莽莽\n大河上下\n顿失滔滔\n山舞银蛇\n原驰蜡象\n欲与天公试比高\n']

【.】可以匹配除换行符之外的所有字符,当设置成re.S之后,可以简单理解为:【.】可以匹配换行符,所以【.】可以匹配所有字符

3. \w+不能匹配换行符

import restring = '''<div>沁园春-雪
北国风光
千里冰封
万里雪飘
望长城内外
惟余莽莽
大河上下
顿失滔滔
山舞银蛇
原驰蜡象
欲与天公试比高
</div>'''pattern = re.compile(r'^<div>(\w+)</div>',re.S) # re.S 单行模式
ret = pattern.findall(string)print(ret) # [],匹配为空

四、复习一下正则表达式

1. 单字符:. : 除换行之外所有字符
[]: [aoe][a-w] 匹配集合中任意一个字符
\d: 数字 [0-9]
\D: 非数字
\w: 数字、子母、下划线、中文
\W: 非\w
\s: 所有的空白字符
\S: 非空白字符2. 数量修饰:
*:任意次数 >=0
+: 至少1次 >=1
?: 可有可无 0次或者1次
{m}: 固定m次
{m,}: 至少m次
{m,n}: m-n次3. 边界:
^: 以...开头
$: 以...结尾4. 分组:
(): 视为一个整体
(ab){4}:视为一个整体,匹配次数
(): 子模式\组模式  \1  \25. 取消贪婪模式
.*?
.+?6. 查找
match: 只从开头开始找
search: 从任意位置开始找
findall: 找所有

1. 分组子模式

import restring = '''<p><div><span>猪八戒</span></div></p>'''pattern = re.compile(r'^<(\w+)><(\w+)>\w+</\2></\1>')
ret = pattern.search(string)print(ret) # <_sre.SRE_Match object; span=(3, 30), match='<div><span>猪八戒</span></div>'>

正则表达式re.S与re.M的区别相关推荐

  1. 正则表达式(括号)、[中括号]、{大括号}的区别小结

    正则表达式(括号).[中括号].{大括号}的区别小结 </h1><div class="clear"></div><div class=& ...

  2. js php 正则差别,正则表达式(括号)、[中括号]、{大括号}的区别小结,正则表达式小结...

    正则表达式(括号).[中括号].{大括号}的区别小结,正则表达式小结 正则表达式的() [] {}有不同的意思. () 是为了提取匹配的字符串.表达式中有几个()就有几个相应的匹配字符串. (\s*) ...

  3. java js 正则区别_对比正则表达式在JavaScript与Java中的区别

    这篇文章主要介绍了JavaScript与Java正则表达式写法的区别介绍,需要的朋友可以参考下 Js验证写法:(转义符\) var str = "待验证文本"; var regul ...

  4. java 正则 大括号_正则表达式(括号)、[中括号]、{大括号}的区别小结 通用所有语言 系统...

    正则表达式的() [] {}有不同的意思. () 是为了提取匹配的字符串.表达式中有几个()就有几个相应的匹配字符串. (\s*)表示连续空格的字符串. []是定义匹配的字符范围.比如 [a-zA-Z ...

  5. 正则表达式(括号)、[中括号]、{大括号}的区别

    正则表达式的() [] {}有不同的意思. () 是为了提取匹配的字符串.表达式中有几个()就有几个相应的匹配字符串. (\s*)表示连续空格的字符串. []是定义匹配的字符范围.比如 [a-zA-Z ...

  6. 正则 null_正则表达式exec、match、test的区别

    一.定义的不同 RegExp.prototype.test() RegExp.prototype.exec() String.prototype.match() 从MDN的定义可以看出,test和ex ...

  7. java matcher group_JAVA正则表达式matcher.find()和 matcher.matches()的区别

    1.find()方法是部分匹配,是查找输入串中与模式匹配的子串,如果该匹配的串有组还可以使用group()函数. matches()是全部匹配,是将整个输入串与模式匹配,如果要验证一个输入的数据是否为 ...

  8. JAVA正则表达式,matcher.find()和 matcher.matches()的区别

    1.find()方法是部分匹配,是查找输入串中与模式匹配的子串,如果该匹配的串有组还可以使用group()函数. matches()是全部匹配,是将整个输入串与模式匹配,如果要验证一个输入的数据是否为 ...

  9. JavaScript系列学习笔记 —— 正则表达式以及JS和Java的写法区别

    目录 一.概念详解 二.基本结构 三.语法类型 普通字符 非打印字符 特殊字符 限定符 定位符 四.语法案例 文本验证定位符 限定符 选择匹配符 字符匹配符 五.开发时常见的正则表达式 六.JavaS ...

最新文章

  1. 提升 composer 的执行速读
  2. a股历史30年的大盘价_[最新]回顾A股历史上的大井喷行情
  3. CSS中background-position详述
  4. 进程同步算法实现实验报告Linux,操作系统进程同步实验报告.doc
  5. 解决vim中文乱码问题
  6. HTML5移动Web开发指南
  7. Maven如何手动添加jar包到本地Maven仓库
  8. paip.TechExcel DevSuite IIS 根目录结构
  9. 第五章 高级发布-订阅模式
  10. MySQL 数据类型转化
  11. CMake工程从入门到进阶完整版,可以完成简单的工程创建(完结)
  12. 随记:STM32L053LL库LPUART串口DMA接收数据
  13. html5输入框自动放大镜,html5输入框左边有一个放大镜图标,右边有按钮点击触发搜索...
  14. 你想要的WinForm界面开发教程在这里 - 如何使用自定义用户控件
  15. 特征选择方法详解Part2-卡方检验、互信息(Mutual Information)
  16. 团队任务3每日立会(2018-10-26)
  17. k-means像素聚类
  18. word表格分页时怎样能自动生成表头
  19. 信息检索——名词解释、简答题
  20. android 多闹钟实现代码,Android编程实现闹钟的方法详解

热门文章

  1. 2对应字母权限Linux,linux中文件权限的字母含义
  2. sipp脚本撰写(二)
  3. 数据分析之matplotlib画图工具的使用(一)
  4. 服务器多IP有什么用?服务器多IP配置方法分享
  5. 6、T5L DGUS ll 应用开发指南摘录(一)
  6. npm 中 --save 与 --save-dev 的区别
  7. 开发微信小程序:创建小程序实例
  8. 万字长文讲透AI艺术:缘起、意义和未来(下篇)
  9. Excel中替换单元格中的换行符
  10. 新书推荐:《AI 3.0》