Python正则表达式

简介: Python正则表达式

一、什么是正则表达式

正则表达式又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。

python对于正则表达式的支持还是比较方便的,使用前导入re包就可以了。

二、正则表达式语法

2.1 [] 表示一个字符,该字符是[]中指定的内容
[a-z] 该字符是任意小写字母
[A-Z] 该字符是任意大写字母
[a-zA-Z0-9] 该字符任意字母或者数字
2.2 预定义字符(注意大小写)
. :表示匹配任意1个字符(除了\n) \.匹配点本身
\d :表示匹配数字,等同于[0-9]
\w :表示单词字符,等同于[a-zA-Z0-9_]
\s :表示空格或者tab
\D :表示匹配非数字
\W :表示匹配非单词字符
\S :表示匹配非空格
2.3 数量匹配
*:表示匹配前一个规则字符出现0-无数次
+:表示匹配前一个规则字符至少出现1次-无数次
?:表示匹配前一个规则字符出现0或者1次
{m}:表示匹配前一个规则字符出现m次
{m,}:表示匹配前一个规则字符至少出现m次
{m,n}:表示匹配前一个规则字符出现m-n次
2.4 边界匹配
^:表示匹配字符串开头
$:表示匹配字符串结尾
\b:表示匹配一个单词边界
\B:表示匹配非单词边界
2.4 分组匹配
|:匹配左右任意一个表达式
():将括号中的字符作为一个分组

三、代码示例

3.1 基础匹配
"""
这里是正则表达式的代码示例,需要导re包
正则表达式re模块的基本匹配方法
"""
import re
# 1. match  从头匹配第一个命中项
str1 = "python is a good language python1!"
# str11 = "1 python is a good language python1!"
res = re.match("python", str1)
print(type(res))
print(res)
# 如果是str11,因为从头开始就不匹配,所以返回None
print(res.span())  # 获取匹配的开始下标到结束下标,不包含右边界
print(res.group()) # 获取匹配的结果
# 运行结果:
# <class 're.Match'>
# <re.Match object; span=(0, 6), match='python'>
print("===================== 分割线1 ==================== ")
res = re.match("python1", str1)
print(type(res))
print(res)   # None,因为match是从头开始匹配,即使字符串中有python1,也不能匹配
print("===================== 分割线2 ==================== ")
# 2. serach  全局匹配,匹配第一个命中项
str2 = "dwadwa python is a good language python1 python !"
res2 = re.search("python", str2)
print(type(res2))
print(res2)
print(res2.span())  # 返回第一个匹配到的其实下标和右边界
print(res2.group()) # 获取匹配的结果
print("===================== 分割线3 ==================== ")
# 3. findall  全局匹配,匹配所有满足项
str3 = "dwadwa python is a good language python1 python dwadadpythonwad python!"
res3 = re.findall("python", str3)
print(res3)
3.2 元字符匹配
"""
Python 正则表达式 元字符匹配代码示例
"""
import  re
str1 = "dwada @@ 163 qq #?!!! 789"
# 字符串前面带r 表示转义字符无效
# 找所有在a-z F-Z 0-9的字符
res1 = re.findall(r'[a-zF-Z0-9]', str1)
print(res1)
# 只找0-9的数字
res1 = re.findall(r'[0-9]', str1)
print(res1)
print("===================== 分割线1 ==================== ")
# 2,匹配账号,只能由数字和字母组成,长度限制6-10位
str2 = "hdjskahdkjshakdhas"
res2 = re.findall(r'^[0-9a-zA-Z]{6,10}$', str2)
print(res2)
str2 = "hdj121ska"
res2 = re.findall(r'^[0-9a-zA-Z]{6,10}$', str2)
print(res2)
print("===================== 分割线2 ==================== ")
# 2,匹配qq号, 只能由数字组成,长度在5-11,第一位不能是0
# 说明:第一位限制在1-9,剩下的4-10位限制在0-9 {4,10}限定剩余的长度
rule = '^[1-9][0-9]{4,10}$'
str3 = "01255306110"
res3 = re.findall(rule, str3)
print(res3)
print("===================== 分割线3 ==================== ")
# 3.匹配邮箱,只允许 qq 163 gmail 三种邮箱地址
# 1125530610@qq.com
# 邮箱的格式: xxx.xxx.xxx.xxx.xxx@xxx.xxx.xxx
# 说明:[\w-]+ 表示所有的数字 a-z A-Z _ -的集合  +号表示至少出现一次
#      (\.[\w-]+)* 表示.xxx  *表示可以出现0到无数次
#      (qq|163|gmail)  三者选一
#      (\.[\w-]+)+  表示该.xxx 至少出现一次
rule4 = '[\w-]+(\.[\w-]+)*@(qq|163|gmail)(\.[\w-]+)+'
str4 = "1125530610@qq.com"
str5 = "1125530610.xxx@qq.com"
res4 = re.findall(rule4, str4)
print(res4)
res4 = re.findall(rule4, str5)
print(res4)
rule41 = r'(^[\w-]+(\.[\w-]+)*@(qq|163|gmail)(\.[\w-]+)+$)'
str4 = "1125530610@qq.com"
str5 = "1125530610.xxx@qq.com"
res4 = re.findall(rule41, str4)
print(res4)
res4 = re.findall(rule41, str5)
print(res4)


推荐一个零声学院免费教程,个人觉得老师讲得不错,分享给大家:[Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,点击立即学习:

相关文章
|
3月前
|
Python
"揭秘!Python如何运用神秘的正则表达式,轻松穿梭于网页迷宫,一键抓取隐藏链接?"
【8月更文挑战第21天】Python凭借其强大的编程能力,在数据抓取和网页解析领域表现出高效与灵活。通过结合requests库进行网页请求及正则表达式进行复杂文本模式匹配,可轻松提取网页信息。本示例展示如何使用Python和正则表达式解析网页链接。首先确保已安装requests库,可通过`pip install requests`安装。接着,利用requests获取网页内容,并使用正则表达式提取所有`&lt;a&gt;`标签的`href`属性。
46 0
|
10天前
|
Python
在Python中,可以使用内置的`re`模块来处理正则表达式
在Python中,可以使用内置的`re`模块来处理正则表达式
26 5
|
15天前
|
数据采集 Web App开发 iOS开发
如何使用 Python 语言的正则表达式进行网页数据的爬取?
使用 Python 进行网页数据爬取的步骤包括:1. 安装必要库(requests、re、bs4);2. 发送 HTTP 请求获取网页内容;3. 使用正则表达式提取数据;4. 数据清洗和处理;5. 循环遍历多个页面。通过这些步骤,可以高效地从网页中提取所需信息。
|
1月前
|
Python
【收藏备用】Python正则表达式的7个实用技巧
【收藏备用】Python正则表达式的7个实用技巧
22 1
|
1月前
|
数据安全/隐私保护 Python
Python实用正则表达式归纳
Python实用正则表达式归纳
|
1月前
|
Python
Python 正则表达式高级应用指南
正则表达式是文本模式匹配的强大工具,Python 的 `re` 模块支持其操作。本文介绍正则表达式的高级应用,包括复杂模式匹配(如邮箱、电话号码)、分组与提取、替换操作、多行匹配以及贪婪与非贪婪模式的区别。通过示例代码展示了如何灵活运用这些技巧解决实际问题。
29 7
|
1月前
|
JavaScript 前端开发 Scala
Python学习十:正则表达式
这篇文章是关于Python中正则表达式的使用,包括re模块的函数、特殊字符、匹配模式以及贪婪与非贪婪模式的详细介绍。
18 0
|
1月前
|
数据采集 开发者 Python
Python正则表达式之re.compile函数
`re.compile`是Python正则表达式处理中一个强大的工具,它通过预先编译正则表达式,不仅提升了执行效率,还增强了代码的组织性和可读性。掌握其使用,对于涉及文本分析、数据清洗、日志处理等领域的Python开发者来说,是非常必要的技能。正确并高效地应用这一功能,可以显著提升程序的性能和维护性。
75 0
|
2月前
|
索引 Python
30天拿下Python之正则表达式
30天拿下Python之正则表达式
17 0
|
2月前
|
数据采集 Python
Python正则表达式提取车牌号
Python正则表达式提取车牌号
下一篇
无影云桌面