Day 18 正则表达式.
一、字符
.匹配除换行符以外的任意字符.
\w 匹配字母数字或者下划线.
\s 匹配任意的空白符
\d 匹配数字
\n 匹配一个换行符
\t 匹配一个制表符
^ 匹配字符串的开始.
$ 匹配字符串的结尾.
\W 匹配非字母或者数字下划线
\D 匹配非数字
\S 匹配非空白符
a|b
() 匹配空号内的表达式 ,也表示一个组
[...]匹配字符组中的字符.
[^....] 匹配除了字符组中字符的所有字符.
量词 :
二、量词
* 重复零次或者更多次
+重复一次或者更多次
?重复零次或者一次
{n}重复n次
{n,}重复n次或者更多次
{n,m}重复n到m次
#* + ? { }实例:
import re
obj1=re.findall('李.?','李杰和李莲英和李二棍子')
print(obj1) #['李杰', '李莲', '李二'],?表示匹配0或者1次,即匹配李后面任意字符1次
obj2=re.findall('李.*','李杰和李莲英和李二棍子')
print(obj2) #['李杰和李莲英和李二棍子'],*表示匹配0次或者多次,即匹配李后面任意字符多次
obj3=re.findall('李.+','李杰和李莲英和李二棍子')
print(obj3) #['李杰和李莲英和李二棍子'],+表示匹配1次或者多次,即匹配李后面任意字符多次
obj3=re.findall('李.{1,2}','李杰和李莲英和李二棍子')
print(obj3) #['李杰和', '李莲英', '李二棍'],{1,2}表示匹配1到2次,即匹配李后面任意字符2次
| 非贪婪模式 | 用法说明 |
*? |
重复0次或更多次,但尽可能少重复 |
+? |
重复1次或更多次,但尽可能少重复 |
?? |
重复0次或1次,但尽可能少重复 |
{n,}?
|
重复n次以上,但尽可能少重复 |
{n,m}?
|
重复n到m次,但尽可能少重复 |
import re
obj1=re.findall('李.??','李杰和李莲英和李二棍子')
print(obj1) #输出结果:['李', '李', '李']
obj2=re.findall('李.*?','李杰和李莲英和李二棍子')
print(obj2) #输出结果:['李', '李', '李']
obj3=re.findall('李.+?','李杰和李莲英和李二棍子')
print(obj3) #输出结果:['李杰', '李莲', '李二']
obj3=re.findall('李.{1,2}?','李杰和李莲英和李二棍子')
print(obj3) #输出结果:['李杰', '李莲', '李二']
import re
obj1=re.findall('李.??','李杰和李莲英和李二棍子')
print(obj1) #输出结果:['李', '李', '李']
obj2=re.findall('李.*?','李杰和李莲英和李二棍子')
print(obj2) #输出结果:['李', '李', '李']
obj3=re.findall('李.+?','李杰和李莲英和李二棍子')
print(obj3) #输出结果:['李杰', '李莲', '李二']
obj3=re.findall('李.{1,2}?','李杰和李莲英和李二棍子')
print(obj3) #输出结果:['李杰', '李莲', '李二']
4、字符集[]和[^]
import re
obj1=re.findall('李.[杰莲英二棍子]*','李杰和李莲英和李二棍子')
print(obj1) #输出结果:['李杰', '李莲英', '李二棍子']
obj2=re.findall('李.[^和]*','李杰和李莲英和李二棍子')
print(obj2) #输出结果:['李杰', '李莲英', '李二棍子'],表示匹配李后面不是和的任意字符
obj3=re.findall('[\d]','456bdha3')
print(obj3) #输出结果:['4', '5', '6', '3'],表示匹配任意一个数字
obj3=re.findall('[\d]+','456bdha3')
print(obj3) #输出结果:['456', '3'],表示匹配任意个数字
5、分组()与或|
身份证号码是由15位或者18位的字符组成,如果是15位,首位不能是0,其他位数均为数字,如果是18位,则最后一位可能是数字或者X,用正则表达式匹配的两种方式如下:
| 正则表达式 | 结果说明 |
| ^[1-9]\d{14}(\d{2}[0-9x])?$ |
()表示分组,将\d{2}[0-9x]分成一组,就可以整体约束他们出现的次数为0-1次
|
| ^([1-9]\d{16}[0-9x]|[1-9]\d{14})$ |
表示先匹配[1-9]\d{16}[0-9x]如果没有匹配上就匹配[1-9]\d{14}
|
Day 18 正则表达式.的更多相关文章
- Java入门 - 语言基础 - 18.正则表达式
原文地址:http://www.work100.net/training/java-regular-expression.html 更多教程:光束云 - 免费课程 正则表达式 序号 文内章节 视频 1 ...
- 【Unity|C#】基础篇(18)——正则表达式(Regex类)
[学习资料] <C#图解教程>:https://www.cnblogs.com/moonache/p/7687551.html 电子书下载:https://pan.baidu.com/s/ ...
- 对Java中正则表达式的一些理解
2016-12-11 22:26:18 正则表达式的意义:正则表达式是一个字符串处理工具,可以对字符串进行查找/提取/分割/替换等等,也可以对用户输入的内容进行匹配. 常用的预定义字符就不解释了,网上 ...
- js正则表达式和replace
javascript中replace与正则表达式 replace()最简单的算是能力就是简单的字符替换.示例代码如下: <script language="javascript&quo ...
- ios 一个正则表达式测试(只可输入中文、字母和数字)
一个正则表达式测试(只可输入中文.字母和数字) 在项目中碰到了正则表达式的运用,正则还是非常强大的,不管什么编程语言,基本上都可以用到.之前在用java时特别是对用户名或密码使用正则非常爽,写 脚本上 ...
- 关于JS正则表达式的一篇文章(转载)
原文:http://www.cnblogs.com/xujh/archive/2008/08/21/1273525.html <input onkeypress="return ...
- 第十八天re模块和·正则表达式
1.斐波那契 # 问第n个斐波那契数是多少 def func(n): if n>2: return func(n-2)+func(n-1) else: return 1 num=int(inp ...
- PHP Fuzzing行动——源码审计
目录: Section 1: 20种PHP源码快速审计方式 Section 2: PHP源码审计自动化( PHP Fuzzer ) 风险级别: ■ Low ■ Medium ■ High 在开 ...
- python基础篇实战
1. 判断下面的结果 # 1. 判断下面的结果 # 1 > 1 or 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6 pri ...
随机推荐
- 【D3D】Direct3D中LPRECT(上左右底)和LPoint(x,y)之前转换
D3DSprite.cpp void CD3DSprite::DrawText(CD3DFont *pFont, char *szString, RECT &DesRect, D3DCOLOR ...
- 使用第三方容器服务,自动化部署.Net Core
1.为什么用第三方,而不自建,有哪些第三方,最后实现的效果 a.尝试过自建,并成功了,但是很麻烦,要敲一堆命令,无法达到全自动化部署的要求. b.自建,就算用第三方的镜像包,感觉下载还是不快,不知道为 ...
- Luogu 3959 [NOIP2017] 宝藏- 状压dp
题解 真的想不到这题状压的做法...听说还有跑的飞快的模拟退火,要是现场做绝对滚粗QAQ. 不考虑深度,先预处理出 $pt_{i, S}$ 表示让一个不属于 集合 $S$ 的 点$i$ 与点集 $S$ ...
- 品味性能之道<二>:性能工程师可以具备的专业素养
性能工程师可以具备的专业素养 程序语言原理,包括:C.C++.java及jvm.ASP,因为建站大部分外围应用和中间件都是JAVA编写,大部分的电商平台采用的ASP编写,底层核心系统是C/ ...
- [Groovy] List和Map用法搜集
http://chenfeng0104.iteye.com/blog/609075 http://www.cnblogs.com/muzi1994/p/5169928.html https://zhi ...
- 如果程序集是从 Web 上下载的,即使它存储于本地计算机,Windows 也会将其标记为 Web 文件,http://go.microsoft.com/fwlink/?LinkId=179545
使用Silverlight,经常弄出很多莫名的XXX文件来于Web,神马信任程序集,就Build个程序都那么麻烦,应该在所有发布时注明一些最基本的配置说明,最BT莫过于连下载程序集的地方都找不到. 若 ...
- sqlserver将数据库的数据导成excel文档方法
sqlserver将数据库的数据导成excel文档方法 最近公司需要下载uniport的数据跟之前的数据进行对比,所以避免不了需要将数据库的数据导出来,把SQLServer表中的数据导出为Excel文 ...
- 2018.10.18 NOIP训练 ZUA球困难综合征(线段树)
传送门 考虑到模数等于7 * 13 * 17 * 19. 那么只需要维护四棵线段树求出每个数处理之后模7,13,17,197,13,17,197,13,17,19的值再用crtcrtcrt合并就行了. ...
- 2018.09.29 bzoj3156: 防御准备(斜率优化dp)
传送门 斜率dp经典题目. 然而算斜率的时候并没有注意到下标的平方会爆int于是咕咕*2. 这道题我用了两个数组来表示状态. f[i]f[i]f[i]表示最后i个位置倒数第i个放木偶的最优值. g[i ...
- 2018.08.14 bzoj4241: 历史研究(回滚莫队)
传送们 简单的回滚莫队,调了半天发现排序的时候把m达成了n... 代码: #include<bits/stdc++.h> #define N 100005 #define ll long ...