正则re模块
正则表达式的特殊字符:
语法:
re.match(正则语法,字符串) # re.match() 为关键字
group(1) # 取出第一个匹配 括号中的值,1位第一个括号内的值
1. 特殊字符
1 . ^ $ * ? + {2} {2,} {2,5} | . .*
^b : 依照b开头
$0 : 依照0结尾
* : 表示前面一个字符可以重复任意多次(0次或n次)
? : 非贪婪模式匹配
+ : 前面字符最少出现一次,才能匹配成功 (和 * 号差异在于其要出现最少一次)
{2}: 前面字符出现的次数{n}
{2,}: 前面字符出现{n,} 次以上
{2,5}: 前面字符最多少最多出现的次数
| : 或
. : 代表任意字符
.* : 任意字符任意次数
2 . [] [^] [a-z] [.] [.*]
[] : 只要在[] 中的字符串中任意一个都可被匹配
[^]: 取非,不等于指定的值[^3] (不等于 3)
[0-9]: 区间值 0-9
[a-z]: 区间值 a-z
[.]: 祛除其原有意义只是一个 .
[.*]: 祛除其原有意义只是一个 .*
3 . \s \S \w \W \d
\s : 空格
\S : 只要不是空格
\w : 包含:[A-Za-z0-9_] 的字符
\W : 不包含:[A-Za-z0-9_] 的字符
\d : 数字
4 . [\u4E00-\u9FA5]
[\u4E00-\u9FA5] : 包含汉字
2. 判断一个字符串是否为 "b" 开头
line = "baolin2200"
regex_str = "^b.*"
data_str = re.match(regex_str, line)[0]
print(data_str)
输出:
baolin2200
3. 判断一个字符串是否为 "b" 开头 和 "0" 结尾
line = "baolin2200"
regex_str = "^b.*0$"
data_str = re.match(regex_str, line)[0]
print(data_str)
输出
baolin2200
**4. 使用非贪婪模式 ? 取出 "baaaal" 这一部分字符串,只提取第一次出现的 "b.l" **
line = "xxxxbaaaalbaaooooolin2200"
regex_str = ".*?(b.*?l).*"
data_str = re.match(regex_str, line).group(1)
print(data_str)
输出:
baaaal
5. 贪婪模式会取出最后一个"b.l"部分的字符, "baaoooool" 后面这部分值
line = "xxxxbaaaalbaaooooolin2200"
regex_str = ".*(b.*l).*"
data_str = re.match(regex_str, line).group(1)
print(data_str)
输出:
baaoooool
6. 取出 baaaal 这一部分字符串
line = "xxxxbaaaalbaaooooolin2200"
regex_str = ".*?(b.+?l).*"
data_str = re.match(regex_str, line).group(1)
print(data_str)
输出:
baaaal
7. 前面字符出现的次数 {n}
line = "xxxxbaaaalbaaooooolin2200"
regex_str = ".*?(b.{4}l).*"
data_str = re.match(regex_str, line).group(1)
print(data_str)
输出:
baaaal
8. 找出"b 和 l"中间字符串 最少出现5次,最多出现7次的匹配
line = "xxxxbaaaalbaaooooolin2200"
regex_str = ".*?(b.{5,7}l).*"
data_str = re.match(regex_str, line).group(1)
print(data_str)
输出:
baaoooool
9.查看字符串中是否包含 bao2200 或 baolin2200 字符串
# group(1) 打印一层括号内值 baolin2200
# group(2) 打印二层括号内值 baolin
line = "baolin2200"
regex_str = "((bao|baolin)2200)"
data_str = re.match(regex_str, line).group(1)
print(data_str)
输出:
baolin2200
10.字符串是否依照 [abcd] 开头
line = "baolin2200"
regex_str = "(([abcd]aolin)2200)"
data_str = re.match(regex_str, line).group(1)
print(data_str)
输出:
baolin2200
11. 匹配数字组合判断是否为手机号码
line = "13812341894"
regex_str = "(1[356789][\d]{9})"
data_str = re.match(regex_str, line).group(1)
print(data_str)
输出:
13812341894
12. 匹配字符串之间空格 \s+ 多个或一个空格
line = "你 好"
regex_str = "(你\s+好)"
data_str = re.match(regex_str, line).group(1)
print(data_str)
13.匹配一段"中文"字符串
line = "你好"
regex_str = "([\u4E00-\u9FA5]+)"
data_str = re.match(regex_str, line).group(1)
print(data_str)
输出:
你好
14.匹配出指定的学校名称
line = "study in 天津大学"
regex_str = ".*?(([\u4E00-\u9FA5]+)大学)"
data_str1 = re.match(regex_str, line).group(1)
data_str2 = re.match(regex_str, line).group(2)
print(data_str1)
print(data_str2)
输出:
天津大学
天津
15.多种语法的套用
linex = "XXX出生于2001年6月"
linex = "XXX出生于2001-06-01"
linex = "XXX出生于2001/06/01"
linex = "XXX出生于2001/6/1"
linex = "XXX出生于2001年6月"
restr = ".*出生于(\d{4}[年/-]\d{1,2}([月/-]\d{1,2}|[月/-]$|$))"
data=re.match(restr, linex).group(1)
print(data)
正则re模块的更多相关文章
- Python模块(三)(正则,re,模块与包)
1. 正则表达式 匹配字符串 元字符 . 除了换行 \w 数字, 字母, 下划线 \d 数字 \s 空白符 \n 换行符 \t 制表符 \b 单词的边界 \W \D \S 非xxx [ ...
- 日志(logging)与正则(re)模块
logging模块 #日志:日常的流水 =>日志文件,将程序运行过程中的状态或数据进行记录,一般都是记录到日志文件中 #1.logging模块一共分为五个打印级别 debug.info.warn ...
- python正则--re模块常用方法
前面几篇关于正则匹配的文章我用的方法都只有一个re.search 但其实正则re模块提供很多非常好用的方法,我们先来看看re模块都有那些属性方法呢 前面的一堆带_或者大写的就不关注了,主要关注最后面的 ...
- 正则 re模块
Python 正则表达式 re 模块 简介 正则表达式(regular expression)是可以匹配文本片段的模式.最简单的正则表达式就是普通字符串,可以匹配其自身.比如,正则表达式 ‘hello ...
- python的正则re模块
一. python的正则 python的正则模块re,是其内置模块,可以直接导入,即import re.python的正则和其他应用的正则及其相似,有其他基础的话,学起来还是比较简单的. 二. 正则前 ...
- python正则re模块
今日内容: 知识点一:正则 什么是正则: 就是用一系列具有特殊含义的字符组成一套规则,改规则用来描述具有某一特征的字符串 正则就是用来在一个大的字符串中取出符合规则的小字符串 为什么用正则: ...
- python 正则 re模块(详细版)
正则表达式 什么是正则表达式? 正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合 ...
- Python 正则表达模块详解
Python 的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承.Py ...
- python - re正则匹配模块
re模块 re 模块使 Python 语言拥有全部的正则表达式功能. compile 函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象.该对象拥有一系列方法用于正则表达式匹配和替换. re ...
- 正则+re模块知识总结
目录 正则表达式 定义+特点 元字符 量词 贪婪匹配与非贪婪匹配 转义符 re模块 re.findall re.search re.match re.compile re.finditer re.sp ...
随机推荐
- 在Apache Struts中利用OGNL注入
前言 本文简要介绍了Apache Struts的OGNL注入缺陷,文章中介绍使用简单的应用程序复现OGNL注入.深入研究针对公共漏洞,并理解这类漏洞. 内容 安装Apache Tomcat服务器(入门 ...
- MySQL如何启用密码强度审计【转】
1.密码验证插件安装 要使服务器可以使用,插件库文件必须位于MySQL插件目录(plugin_dir系统变量指定的目录)中.如有必要,请设置plugin_dir服务器启动时的值, 以告知服务器插件目录 ...
- input[type=file]上传文件(格式判断、文件大小、上传成功后操作)
var isUploadImg = false; //在input file内容改变的时候触发事件******************上传图片 $('#filed').change(function( ...
- Crypto++入门学习笔记(DES、AES、RSA、SHA-256)
最先附上 下载地址 背景(只是个人感想,技术上不对后面的内容构成知识性障碍,可以skip): 最近,基于某些原因和需要,笔者需要去了解一下Crypto++库,然后对一些数据进行一些加密解密的操作. 笔 ...
- U盘文件系统格式
u盘文件系统主要有FAT32.NTFS两种 ● FAT32文件系统 FAT32使用4个字节(也就是32位)的空间来表示每个扇区(Sector)配置文件的情形,故称之为FAT32.FAT16的分区容量上 ...
- 洛谷:P3281 [SCOI2013]数数 (优秀的解法)
刷了这么久的数位 dp ,照样被这题虐,还从早上虐到晚上,对自己无语...(机房里又是只有我一个人,寂寞.) 题目:洛谷P3281 [SCOI2013]数数 题目描述 Fish 是一条生活在海里的鱼, ...
- 前端跨域问题的总结&&nodejs 中间层的路由转发
前后端交互的时候,跨域是避不开的问题. 总结就是如下: 1.Cors 我在做前后端分离的时候,会采用cors 的方法:便于其他源的调用接口,这个可以设置成任意的源头,也可以允许指定的源头. 下面的是n ...
- mtu简单说明
总结:本地的mtu值==网络设备的mtu值是最优的,一般本地和网络设备的默认值都是1500(字节),没什么特殊需求,尽量不要修改 一.什么是 MTU 值 1 从字面上来说,MTU 是英文 Maxi ...
- redhat7.3安装yum源
#检查rehat自带的yum源[root@localhost ~]# rpm -qa | grep yum -.el7.noarch -.el7.noarch -.el7.noarch -.el7.n ...
- swift 学习- 18 -- 自动引用计数
// Swift 使用 自动引用计数 (ARC) 机制来跟踪和管理你的应用程序的内存, 通常情况下, Swift 内存管理机制会一直起作用, 你无须自己来考虑内存的管理, ARC 会在类的实例不再被使 ...