概述

概念

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()  逃逸字符

Python之正则表达式笔记的更多相关文章

  1. Python的正则表达式笔记

    1. "先抓大再抓小": 遇到一个正则表达式无法一次性筛选出所需内容时, 可以先在一个范围内筛选第一次, 再在小范围中筛选第二次. 2. pattern = re.compile( ...

  2. (转)Python爬虫学习笔记(2):Python正则表达式指南

    以下内容转自CNBLOG:http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html 1. 正则表达式基础 1.1. 简单介绍 正则表达式并 ...

  3. 《简明python教程》笔记一

    读<简明Python教程>笔记: 本书的官方网站是www.byteofpython.info  安装就不说了,网上很多,这里就记录下我在安装时的问题,首先到python官网下载,选好安装路 ...

  4. python核心编程--笔记

    python核心编程--笔记 的解释器options: 1.1 –d   提供调试输出 1.2 –O   生成优化的字节码(生成.pyo文件) 1.3 –S   不导入site模块以在启动时查找pyt ...

  5. Python网络爬虫笔记(五):下载、分析京东P20销售数据

    (一)  分析网页 下载下面这个链接的销售数据 https://item.jd.com/6733026.html#comment 1.      翻页的时候,谷歌F12的Network页签可以看到下面 ...

  6. Python:正则表达式详解

    正则表达式是一个很强大的字符串处理工具,几乎任何关于字符串的操作都可以使用正则表达式来完成,作为一个爬虫工作者,每天和字符串打交道,正则表达式更是不可或缺的技能,正则表达式的在不同的语言中使用方式可能 ...

  7. Python标准库笔记(8) — pprint模块

    struct模块提供了用于在字节字符串和Python原生数据类型之间转换函数,比如数字和字符串. Python版本: 2.x & 3.x 该模块作用是完成Python数值和C语言结构体的Pyt ...

  8. python基础===正则表达式(转)

    正则表达式是一个很强大的字符串处理工具,几乎任何关于字符串的操作都可以使用正则表达式来完成,作为一个爬虫工作者,每天和字符串打交道,正则表达式更是不可或缺的技能,正则表达式的在不同的语言中使用方式可能 ...

  9. Python的正则表达式re模块

    Python的正则表达式(re模块) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Python使用re模块提供了正则表达式处理的能力.如果对正则表达式忘记的一干二净的话,可以花费 ...

随机推荐

  1. hello world&Restart the Journey

      一个女OIer. 总结,游记,集训日志在博客园:题解大多在洛谷. 洛谷博客点这里. $\texttt{ You can go on,just take me with you.}$ 可以叫我Har ...

  2. vue 页面间传值

    使用params传参 ,不能使用path 只能使用name 使用params传参,刷新参数会消失 router/index.js import Vue from 'vue' import Router ...

  3. 腾讯基于 Flink 的实时流计算平台演进之路

    https://mp.weixin.qq.com/s/MGnG_Mpf6CUQWLJHvmWqLA

  4. wordpress插件开发流程梳理

    1.声明一个插件 首先我们必须明白,wordpress的插件可以是单文件,也可以是多文件,css/html都不是必须的,以下举例暂且在单文件模式下 比如我们要创建一个名为 hellophp的插件,那我 ...

  5. CV3——学习笔记-实战项目(上):如何搭建和训练一个深度学习网络

    http://www.mooc.ai/course/353/learn?lessonid=2289&groupId=0#lesson/2289 1.AlexNet, VGGNet, Googl ...

  6. 关于mysql索引---联合索引

    结论: mysql联合索引,联合索引以哪个字段开始很重要. 如果  联合索引字段为  1,2,3,4 那么如果查询条件为  6,7,8,1 这样也会走上面的联合索引 但是如果查询条件不是从1开始那么则 ...

  7. 【423】COMP9024 Revision

    目录: array '\0' 与 EOF 二维字符数组(字符串数组) 1. array: 参考:C 数组 参考:C 字符串 参考:C笔记之NULL和字符串结束符'\0'和EOF 总结:[个人理解,可能 ...

  8. Ubuntu 14.04 apache安装配置

    http://jingyan.baidu.com/article/6d704a130c8a0d28da51ca5f.html Ubuntu 14.04 apache安装配置 1.安装 ~# apt-g ...

  9. 通用的调用WebService的两种方法。(调用别人提供的wsdl)(转)

    转载自:http://blog.sina.com.cn/s/blog_65933e020101incz.html1.调用WebService的Client端采用jax-ws调用WebService:流 ...

  10. (十四)Centos之安装vsftp服务

    一.为什么要安装vsftp服务 我们需要向centos操作系统的服务器上上传文件或者下载文件,这时候,ftp有必要安装下,我们选择主流的vsftp 二.安装 第一步:安装vsftp yum insta ...