python进阶之正则表达式
概念
正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
目的
符号
正则 |
待匹配字符 |
匹配 |
说明 |
[0123456789] |
8 |
True |
在一个字符组里枚举合法的所有字符,字符组里的任意一个字符 |
[0123456789] |
a |
False |
由于字符组中没有"a"字符,所以不能匹配 |
[0-9] |
7 |
True |
也可以用-表示范围,[0-9]就和[0123456789]是一个意思 |
[a-z] |
s |
True |
同样的如果要匹配所有的小写字母,直接用[a-z]就可以表示 |
[A-Z] |
B |
True |
[A-Z]就表示所有的大写字母 |
[0-9a-fA-F] |
e |
True |
可以匹配数字,大小写形式的a~f,用来验证十六进制字符 |
字符
元字符 |
匹配内容 |
| . | 匹配除换行符以外的任意字符 |
| \w | 匹配字母或数字或下划线 |
| \s | 匹配任意的空白符 |
| \d | 匹配数字 |
| \n | 匹配一个换行符 |
| \t | 匹配一个制表符 |
| \b | 匹配一个单词的结尾 |
| ^ | 匹配字符串的开始 |
| $ | 匹配字符串的结尾 |
| \W |
匹配非字母或数字或下划线 |
| \D |
匹配非数字 |
| \S |
匹配非空白符 |
| a|b |
匹配字符a或字符b |
| () |
匹配括号内的表达式,也表示一个组 |
| [...] |
匹配字符组中的字符 |
| [^...] |
匹配除了字符组中字符的所有字符 |
量词
量词 |
用法说明 |
| * | 重复零次或更多次(贪婪匹配) |
| + | 重复一次或更多次(贪婪匹配) |
| ? | 重复零次或一次 |
| {n} | 重复n次 |
| {n,} | 重复n次或更多次 |
| {n,m} | 重复n到m次 |
实例
匹配任意数字
匹配任意小写字母
匹配任意大写字母
[A-Z] ----ABC123DEF456只要字符串中包含任意大写字符,都会被匹配
匹配数字+小写字母+大写字母
\w与\W与[\w\W](匹配所有字符)


\s与\S与[\s\S](匹配所有字符)



\d与\D与[\d\D](匹配所有字符)



\n与\t(tab制表符与\b



^(匹配一个字符串的开头) 与$

(匹配以[a-z]开头,以[a-z]结尾的字符串,这里只能匹配2个字符的字符串,因为[]代表一个字符组)
a|b(从左向右匹配,优先匹配a)


(左边匹配了,右边不会再匹配)
[^...]


组合练习
*+?{}
| 待匹配字符串 | 正则表达式 | 匹配结果 | 说明 |
|
小李和小王和小亮 小李和小王王和小亮亮亮 |
[^和]+ |
小李 小李 |
匹配非'和'的所有字符串多次 |
| 小李和小王王和小亮亮亮 | [^和]{2,4} | 小李 小王王 小亮亮亮 |
匹配非‘和’的所有字符串2到4次 |
| 小李和小王王和小亮亮亮 | [^和]{2,4}? | 小李 小王 小亮 亮亮 |
匹配非‘和’的所有字符串2次 |
| 小李和小王王和小亮亮亮 | 小.? | 小李 小王 小亮 |
匹配小后面任意字符0次或1次 |
| 小李和小王王和小亮亮亮 | 小.* | 小李和小王王和小亮亮亮 | 匹配小后面任意字符0次或多次 |
| 小李和小王王和小亮亮亮 | 小.+ | 小李和小王王和小亮亮亮 | 匹配小后面任意字符一次或多次 |
| 小李和小王王和小亮亮亮 | 小.{1,2} | 小李和 小王王 小亮亮 |
匹配小后面任意字符一次到2次 |
| 小李和小王王和小亮亮亮 | 小.*? | 小 小 小 |
匹配小后面任意字符0次(因为有?限制,表示匹配最少的页就是0次即什么都不匹配) |
字符集[] [^]
| 待匹配字符串 | 正则表达式 | 匹配结果 | 说明 |
| 小李和小王王和小亮亮亮 | 小[李王王亮亮亮]* | 小李 小王王 小亮亮亮 |
匹配小后面字符组里面任意字符0次或多次 |
| 小李和小王王和小亮亮亮 | 小[^和]* | 小李 小王王 小亮亮亮 |
匹配小后面非和子的任意字符0次或多次 |
| 123abc345 | [\d] |
1 2 3 3 4 5 |
匹配任意一个数字 |
| 123abc345 | [\d]* |
123 345 |
匹配任意多个数字 |
| 123abc345 | [\d]+ |
123 345 |
匹配任意多个数字 |
分组()与或 | [^]
匹配15位或18位身份证,15位需都是数字组成,18位可以是数字或x结尾,首位都不能为0
| 待匹配字符串 | 正则表达式 | 匹配结果 | 说明 |
| 110621199012014599 | ^[1-9]\d{13,16}[0-9x]$ | 110621199012014599 | 可以匹配到一个正确的身份证,但是如果是16位1106211990120145也同样能匹配到,但是这并不是身份证 |
| ^[1-9]\d{14}(\d{2}[0-9x])?$ | 不会再匹配错误的身份证(你可以试试的) | ||
| 110621199012014599 | ^([1-9]\d{16}[0-9x]|[1-9]\d{14})$ | 110621199012014599 | 这个是比较好的表达式,先匹配18位,再匹配15位 |
总结
要想熟练的使用正则表达式,还是要多练多写吧! 希望大家能像计算1+1=2这么简单的使用正则表达式
python进阶之正则表达式的更多相关文章
- python进阶11 正则表达式
python进阶11 正则表达式 一.概念 #正则表达式主要解决什么问题? #1.判断一个字符串是否匹配给定的格式,判断用户提交的又想的格式是否正确 #2.从一个字符串中按指定格式提取信息,抓取页面中 ...
- python进阶(20) 正则表达式的超详细使用
正则表达式 正则表达式(Regular Expression,在代码中常简写为regex. regexp.RE 或re)是预先定义好的一个"规则字符率",通过这个"规 ...
- Python 进阶 - 正则表达式
1. 正则表达式基础 1.1. 简单介绍 正则表达式并不是Python的一部分.正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十 ...
- [.net 面向对象程序设计进阶] (2) 正则表达式 (一) 快速入门
[.net 面向对象程序设计进阶] (2) 正则表达式 (一) 快速入门 1. 什么是正则表达式? 1.1 正则表达式概念 正则表达式,又称正则表示法,英文名:Regular Expression(简 ...
- python模块 re模块与python中运用正则表达式的特点 模块知识详解
1.re模块和基础方法 2.在python中使用正则表达式的特点和问题 3.使用正则表达式的技巧 4.简单爬虫例子 一.re模块 模块引入; import re 相关知识: 1.查找: (1)find ...
- Python进阶(十二)----re模块
Python进阶(十二)----re模块 一丶re模块 re模块是python将正则表达式封装之后的一个模块.正则表达式模式被编译成一系列的字节码,然后由用C编写的匹配引擎执行. #正则表达式: ...
- 尚学python课程---15、python进阶语法
尚学python课程---15.python进阶语法 一.总结 一句话总结: python使用东西要引入库,比如 json 1.python如何创建类? class ClassName: :以冒号结尾 ...
- Python高手之路【五】python基础之正则表达式
下图列出了Python支持的正则表达式元字符和语法: 字符点:匹配任意一个字符 import re st = 'python' result = re.findall('p.t',st) print( ...
- python基础之正则表达式
正则表达式语法 正则表达式 (或 RE) 指定一组字符串匹配它;在此模块中的功能让您检查一下,如果一个特定的字符串匹配给定的正则表达式 (或给定的正则表达式匹配特定的字符串,可归结为同一件事). 正则 ...
随机推荐
- 对vue源码的初步认识和理解
根据vue的官网介绍,可以得知vue是一个mvvm框架,且是响应式的.为了更深入了理解其内涵,本人以及理解实现了一个简单的mvvm学习的demo.下面分享给大家,欢迎大家一起讨论. 一.mvvm至少包 ...
- asp.net core 系列 14 错误处理
一.概述 本文介绍处理 ASP.NET Core 应用中常见错误的一些方法.主要是关于:开发环境异常页:非开发环境配置自定义异常处理页:配置状态代码页(没有正文响应,http状态400~599的). ...
- 在龙芯小本上安装Debain8.10
(图片是LEMOTE8089D笔记本,来自互联网) YX原来送了一个LEMOTE笔记本给我.CPU是首款真正的国产,龙芯2F,兼容mips的指令集. 笔记本原来的操作系统是Debian6,后来升级到了 ...
- Unity资源打包学习笔记(一)、详解AssetBundle的流程
转载请标明出处:http://www.cnblogs.com/zblade/ 本文参照unity官网上对于assetBundle的一系列讲解,主要针对assetbundle的知识点做一个梳理笔记,也为 ...
- SpringCloud Feign的分析
Feign是一个声明式的Web Service客户端,它使得编写Web Serivce客户端变得更加简单.我们只需要使用Feign来创建一个接口并用注解来配置它既可完成. @FeignClient(v ...
- C#2.0之细说泛型
C#2的头号亮点 : 泛型 在C#1中,Arraylist总是会给人带来困扰,因为它的参数类型是Object,这就让开发者无法把握集合中都有哪些类型的数据.如果对string类型的数据进行算术操作那自 ...
- Python:Selenium 1:浏览器驱动
Selenium是一个用于测试网站的自动化测试工具,爬虫中也经常用到,支持各种浏览器包括Chrome.Firefox.Safari等主流界面浏览器,同时也支持phantomJS无界面浏览器. 自Web ...
- RabbitMQ消息队列(三)-Centos7下安装RabbitMQ3.6.1
如果你看过前两章对RabbitMQ已经有了一定了解,现在已经摩拳擦掌,来吧动手吧! 用什么系统 本文使用的是Centos7,为了保证对linux不太熟悉的伙伴也能轻松上手(避免折在安装的路上),下面是 ...
- 【c#】RabbitMQ学习文档(六)RPC(远程调用)
远程过程调用(Remote Proceddure call[RPC]) (本实例都是使用的Net的客户端,使用C#编写) 在第二个教程中,我们学习了如何使用工作队列在多个工作实例之间分配耗时的任务. ...
- 微服务架构:Eureka参数配置项详解
版权声明:本文为博主原创文章,转载请注明出处,欢迎交流学习! Eureka涉及到的参数配置项数量众多,它的很多功能都是通过参数配置来实现的,了解这些参数的含义有助于我们更好的应用Eureka的各种功能 ...