Python 正则表达式(RegEx)
版权所有,未经许可,禁止转载
章节
- Python 介绍
 - Python 开发环境搭建
 - Python 语法
 - Python 变量
 - Python 数值类型
 - Python 类型转换
 - Python 字符串(String)
 - Python 运算符
 - Python 列表(list)
 - Python 元组(Tuple)
 - Python 集合(Set)
 - Python 字典(Dictionary)
 - Python If … Else
 - Python While 循环
 - Python For 循环
 - Python 函数
 - Python Lambda
 - Python 类与对象
 - Python 继承
 - Python 迭代器(Iterator)
 - Python 模块
 - Python 日期(Datetime)
 - Python JSON
 - Python 正则表达式(RegEx)
 - Python PIP包管理器
 - Python 异常处理(Try…Except)
 - Python 打开文件(File Open)
 - Python 读文件
 - Python 写文件
 - Python 删除文件与文件夹
 
正则表达式是组成搜索模式的字符序列。
正则表达式用于按指定的搜索模式搜索字符串。
正则表达式(RegEx)模块
Python有一个名为re的内置包,用来处理正则表达式。
示例
导入re模块:
import re
Python中的正则表达式
导入re模块后,就可以开始使用正则表达式:
示例
搜索字符串,查看是否以“the”开头,以“Spain”结尾:
import re
txt = "The rain in Spain"
x = re.search("^The.*Spain$", txt)
正则表达式函数
re模块提供了一组函数,用于搜索匹配的字符串:
| 函数 | 描述 | 
|---|---|
| findall | 返回包含所有匹配项的列表 | 
| search | 如果文本中有匹配项,则返回匹配对象 | 
| split | 使用字符串分割文本,返回文本被分割后的列表 | 
| sub | 用字符串替换一个或多个匹配项/td> | 
元字符
元字符是具有特殊意义的字符:
| 字符 | 描述 | 例子 | 
|---|---|---|
| [] | 字符集合 | "[a-m]" | 
| \ | 标志特殊转义字符(也可以用来转义特定字符) | "\d" | 
| . | 任何字符(换行字符除外) | "he..o" | 
| ^ | 开始文本 | "^hello" | 
| $ | 结束文本 | "world$" | 
| * | 0次或多次出现 | "aix*" | 
| + | 1次或多次出现 | "aix+" | 
| {} | 确定的出现次数 | "al{2}" | 
| | | 或者 | "falls|stays" | 
| () | 捕获并分组 | 
特殊转义字符
特殊转义字符是\后面跟着下面列表中的某个字符,有特殊的含义:
| 字符 | 描述 | 例子 | 
|---|---|---|
| \A | 如果指定字符串位于文本的开头,则返回匹配项 | "\AThe" | 
| \b | 如果指定字符串位于文本开头或结尾,则返回匹配项 | r"\bain" r"ain\b"  | 
| \B | 如果指定字符串没有位于文本开头或结尾,则返回匹配项 | r"\Bain" r"ain\B"  | 
| \d | 如果文本中包含了数字(0-9),返回匹配项 | "\d" | 
| \D | 如果文本中不包含数字(0-9),返回匹配项 | "\D" | 
| \s | 返回文本中包含空白字符的匹配项 | "\s" | 
| \S | 返回文本中不包含空白字符的匹配项 | "\S" | 
| \w | 如果文本中包含任何单词字符(从a到Z的字符,从0到9的数字,以及下划线_字符),返回匹配项 | "\w" | 
| \W | 如果文本中不包含任何单词字符(从a到Z的字符,从0到9的数字,以及下划线_字符),返回匹配项 | "\W" | 
| \Z | 如果指定的字符串位于文本末尾,则返回匹配项 | "Spain\Z" | 
集合
集合是一对方括号[]中的一组字符,具有特殊的含义:
| Set | 描述 | 
|---|---|
| [arn] | 返回匹配指定字符(a、r或n)之一的匹配项 | 
| [a-n] | 返回匹配任意a和n之间,小写字符的匹配项 | 
| [^arn] | 返回匹配除a、r和n之外的任何字符的匹配项 | 
| [0123] | 返回匹配指定数字(0、1、2或3)的匹配项 | 
| [0-9] | 返回匹配0到9之间任意数字的匹配项 | 
| [0-5][0-9] | 返回匹配从00到59的任意两位数的匹配项 | 
| [a-zA-Z] | 返回匹配按字母顺序在a和z之间、小写或大写的任何字符的匹配项 | 
| [+] | 在集合中,+,*,.,|,(),$,{}没有特殊的含义,所以[+]的意思是: 返回字符串中"+"字符的匹配项 | 
findall()函数
findall()函数返回一个包含所有匹配项的列表。
示例
打印包含所有匹配项的列表:
import re
str = "The rain in Spain"
x = re.findall("ai", str)
print(x)
列表中的匹配项按找到的顺序排序。
如果没有找到匹配项,返回一个空列表:
示例
打印所有匹配项的列表:
import re
str = "The rain in Spain"
x = re.findall("Portugal", str)
print(x)
search() 函数
search() 搜索文本中的匹配项,如果有匹配项,返回匹配对象。
如果有多个匹配项,只返回第一个:
示例
搜索文本中的第一个空白字符:
import re
str = "The rain in Spain"
x = re.search("\s", str)
print("第一个空白字符位于:", x.start())
如果没有找到匹配项,则返回None值:
示例
不匹配:
import re
str = "The rain in Spain"
x = re.search("Portugal", str)
print(x)
split() 函数
split()函数使用字符串分割文本,返回文本被分割后的列表:
示例
在每个空白字符处分割文本:
import re
str = "The rain in Spain"
x = re.split("\s", str)
print(x)
可以通过指定maxsplit参数来控制分割次数:
示例
只在第一次匹配时分割字符串:
import re
str = "The rain in Spain"
x = re.split("\s", str, 1)
print(x)
sub() Function
将匹配项替换为指定文本:
示例
用数字9替换每个空白字符:
import re
str = "The rain in Spain"
x = re.sub("\s", "9", str)
print(x)
可以通过count参数来控制替换的数量:
示例
替换前两项:
import re
str = "The rain in Spain"
x = re.sub("\s", "9", str, 2)
print(x)
匹配对象
匹配对象是一个包含搜索和结果信息的对象。
注意: 如果没有匹配,则返回None值,而不是匹配对象。
示例
搜索一下,将返回一个匹配对象:
import re
str = "The rain in Spain"
x = re.search("ai", str)
print(x) #打印对象
匹配对象具有用于检索搜索信息的属性和方法:
.span()返回一个元组,其中包含匹配项的开始和结束位置。.string返回传递给函数的文本.group()返回文本中匹配的部分
示例
打印第一个匹配项的位置(开始和结束位置)。
正则表达式查找任何以大写字母“S”开头的单词:
import re
str = "The rain in Spain"
x = re.search(r"\bS\w+", str)
print(x.span())
示例
打印传入函数的文本:
import re
str = "The rain in Spain"
x = re.search(r"\bS\w+", str)
print(x.string)
示例
打印文本中匹配的部分。
正则表达式查找任何以大写字母“S”开头的单词:
import re
str = "The rain in Spain"
x = re.search(r"\bS\w+", str)
print(x.group())
注意: 如果没有匹配,则返回None值,而不是匹配对象。
Python 正则表达式(RegEx)的更多相关文章
- 更强大的python正则表达式模块 -- regex
		
python内置的正则表达库re比较弱,而且似乎在好几年里都没太大的变化. 这里介绍这个python模块regex,实现了更多方便好用的功能. 比如:\p{han} 可以匹配汉字, \p{Latin} ...
 - Python 正则表达式入门(初级篇)
		
Python 正则表达式入门(初级篇) 本文主要为没有使用正则表达式经验的新手入门所写. 转载请写明出处 引子 首先说 正则表达式是什么? 正则表达式,又称正规表示式.正规表示法.正规表达式.规则表达 ...
 - python正则表达式re
		
Python正则表达式: re 正则表达式的元字符有. ^ $ * ? { [ ] | ( ).表示任意字符[]用来匹配一个指定的字符类别,所谓的字符类别就是你想匹配的一个字符集,对于字符集中的字符可 ...
 - 比较详细Python正则表达式操作指南(re使用)
		
比较详细Python正则表达式操作指南(re使用) Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式.Python 1.5之前版本则是通过 regex 模块提供 E ...
 - Python正则表达式学习摘要及资料
		
摘要 在正则表达式中,如果直接给出字符,就是精确匹配. {m,n}? 对于前一个字符重复 m 到 n 次,并且取尽可能少的情况 在字符串'aaaaaa'中,a{2,4} 会匹配 4 个 a,但 a{2 ...
 - Python 正则表达式-OK
		
Python正则表达式入门 一. 正则表达式基础 1.1. 简单介绍 正则表达式并不是Python的一部分. 正则表达式是用于处理字符串的强大工具, 拥有自己独特的语法以及一个独立的处理引擎, 效率上 ...
 - Python天天美味(15) - Python正则表达式操作指南(re使用)(转)
		
http://www.cnblogs.com/coderzh/archive/2008/05/06/1185755.html 简介 Python 自1.5版本起增加了re 模块,它提供 Perl 风格 ...
 - [转] Python正则表达式指南
		
本文介绍了Python对于正则表达式的支持,包括正则表达式基础以及Python正则表达式标准库的完整介绍及使用示例.本文的内容不包括如何编写高效的正则表达式.如何优化正则表达式,这些主题请查看其他教程 ...
 - python 正则表达式汇总
		
一. 正则表达式基础 1.1.概念介绍 正则表达式是用于处理字符串的强大工具,它并不是Python的一部分. 其他编程语言中也有正则表达式的概念,区别只在于不同的编程语言实现支持的语法数量不同. 它拥 ...
 
随机推荐
- 初学JQuery
			
JQuery是对JavaScript的封装,简化了JS代码,是主流框架的基础(VUE,EasyUI,Bootstrap) 它是2006年推出的 JQuery的优势:体积小,压缩后只有100KB左右强大 ...
 - 简单易懂之python 中的map,filter,reduce用法
			
map(function,sequence) 把sequence中的值当参数逐个传给function,返回一个包含函数执行结果的list. 重点是结果返回一个列表,这样对返回的列表就可以干很多的活了. ...
 - Laradock 使用中遇到的问题汇总
			
1.ErrorException] mkdir (): Permission denied 解决:权限不够,thinkphp5下,runtime 文件夹改777,文件所有者改为 laradock(进入 ...
 - ionic3记录之弹窗Alert
			
一个业务流程需要多个弹窗: 在上一个弹窗的onDidDissmiss写下一个弹窗:
 - Javascript调用本地数据库
			
window.location.href = urls; // 本窗口打开下载 window.open(urls, '_blank'); // 新开窗口下载 (1)new ActiveXObject( ...
 - 十六、JSONObject与JSONArray使用-不刷新页面做回写显示
			
需要导入:json-lib-2.2.2-.jar包 1.json:就是一个键对应一个值,超级简单的一对一关系.对于json嵌套,只要记住符号“:”前是键,符号后是值大括号成对找. String arr ...
 - js正则 - 限制用户名只能中文、字母和数字  , 不能包含特殊字符
			
/^[\u4E00-\u9FA5A-Za-z0-9]+$/
 - Django(十五)模板详解:模板标签、过滤器、模板注释、模板继承、html转义
			
一.模板的基础配置及使用 [参考]https://docs.djangoproject.com/zh-hans/3.0/topics/templates/ 作为Web框架,Django提供了模板,用于 ...
 - Jmeter测试入门——带token的http请求
			
安装 官网下载地址:http://jmeter.apache.org/download_jmeter.cgi 下载完成后解压zip包 启动JMeter,双击JMeter解压路径bin下面的jmeter ...
 - 新闻网大数据实时分析可视化系统项目——19、Spark Streaming实时数据分析
			
1.Spark Streaming功能介绍 1)定义 Spark Streaming is an extension of the core Spark API that enables scalab ...