概述

概念

Regular Expression

一种文本模式,描述在搜索文本时要匹配的一个或多个字符串

典型场景

数据验证、文本扫描、文本提取、文本替换、文本分割

语法

字面值

普通字符

需转义:\  ^  $  .  |  ?  *  +  ()  []  {}

元字符

 匹配

单字,预定义元字符

. 除\n外的所有字符   \d 数字,等同于[0-9]   \D非数字,等同于[^0-9]

\s 空白字符 \t\n\r\f\v     \S 非空白字符[^\t\n\r\f\v]

\w 字母数字字符[a-zA-Z0-9_]     \W 非字线数字[^a-zA-Z0-9_]

批量备选     |  yes|no

量词(字符、元字符,字符集如何重复)

? 0或1次   * 0或多次   + 1或多次

特定: {n,m}范围次数 {n}n次  {n,}至少n次   {,m}最多m次

贪婪与非贪婪

贪婪(默认):尽量匹配最大范围结果

非贪婪

尽量匹配最小的范围结果

方法:量词后追加? 例:??   *?   +?

边界匹配

^ 行首   $ 行尾   \b 单词边界   \B 非单词边界    \A 输入开头    \Z 输入结尾

注:或因上下文差异有不同表

Python 正则

模块     import re

RegexObject 正则对象

模式对象,表现编译后的正则表达式(编译为字节码并缓存)

编译     re.compile('模式')

.findall()  1查找所有非重叠匹配项  2返回list

.match(string[,pos[,endpos]])  1匹配,仅从开始位置  2返回MatchObject

.search(string[,[pos[,endpos]])  1任意位置搜索  2返回MatchObject

.finditer()  1查找所有匹配项   2返回包括MatchObject元素的迭代器

MatchObject 匹配对象

表现被匹配的模式

.group() 1参数为0或空返回整个匹配 2有参时返回特定分组匹配细节 3参数也可以是分组名称

.groups()   返回包含所有子分组的元组

.start() 返回特定分组的起始索引

.end() 返回特定分组的终止索引

.groupdict() 以字典表形式返回分组名及结果

Group 编组

场景   1从匹配模式中提取信息 2创建子正则以应用量词  3限制备选项范围

4重用正则模式中提取的内容

声明   1(模式) 2(?P<name>模式)

引用   1匹配对象内 m.group('name')  2模式内 (?P=name)  3表现内 \g<name>

应用

字符串操作  1 .split(string, maxsplit=0)   分割字符串

2 .sub(repl, string, count=0)   替换字符串

3 .subn(repl, string, count=0)   替换并返回替换数量

编译标记  1 改变正则的默认行为  2 re.I  忽略大小写  3 re.M  匹配多行

4 re.S  指定"."匹配所有字符,包括\n   …

模块级别操作  1 re.purge()  清理正则缓存   2 re.escape()  逃逸字符

最新文章

  1. beans.xml
  2. Android之登录那点事
  3. 修改CMD字符编码
  4. 搜索框js样式(通用型)
  5. 关于停止AsyncTask和Thread的问题
  6. Flash Player”又来了“!
  7. ZBLibrary不能运行的解决方法
  8. (转)OpenVPN下载、安装、配置及使用详解
  9. 内存数据库MemSQL ——基于内存,MVCC+哈希表、跳表
  10. springMVC之annotation优化
  11. JQuery 模糊匹配
  12. HashSet集合
  13. C# ASP.NET 转换为int型的方法 很实用
  14. 洛谷 P3038 [USACO11DEC]牧草种植Grass Planting(树链剖分)
  15. 2019.3.28 S21 day02pyth笔记总结
  16. ExtJS初探:了解 Ext Core
  17. 自定义reg52.h头文件(单片机学习重难点核心知识点)
  18. SAP 以工序为基准进行发料 机加工行业 Goods Issue to Routing
  19. JavaWeb重定向和转发
  20. Android R资源文件无法更新或丢失

热门文章

  1. (转)hadoop 常规错误问题(一)
  2. ngx.shared.DICT.get 详解
  3. 对Zlib单元进行再封装
  4. SurfaceView之绘制sin曲线
  5. 自定义控件之Region区域
  6. pytorch加载数据的方法-没弄,打算弄
  7. PaddlePaddle实现线性回归
  8. 38 Flutter仿京东商城项目 渲染结算页面商品数据
  9. 算法习题---4-4骰子涂色(UVa253)
  10. Django之model.form创建select标签