python基础知识(29)正则表达式

python用正则表达式判断字符串_使用Python验证常见的50个正则表达式 什么是正则表达式?正则表达式(Regular Expression)通常被用来检索、替换那些符合某个模式(规则)的文本。此处的Regular即是规则、规律的意思,Regular Expression即“描述某种规则的表达式”之意。本文收集了一些常见的正则表达式用法,方便大家查询取用,并在最后附了详细的正则表达式语法手册。案例包括:邮箱、身份证号、手机号码、固定电话、域名、IP地址、日期、邮编、密码... 阅读详情

 

一、初识 Python 正则表达式

正则表达式是一个特殊的字符序列,用于判断一个字符串是否与我们所设定的字符序列是否匹配,也就是说检查一个字符串是否与某种模式匹配。

Python 自 1.5 版本起增加了re 模块,它提供 Perl 风格的正则表达式模式。re 模块使 Python 语言拥有全部的正则表达式功能。

下面通过实例,一步一步来初步认识正则表达式。

比如在一段字符串中寻找是否含有某个字符或某些字符,通常我们使用内置函数来实现,如下:

# 设定一个常量
a = '两点水|twowater|liangdianshui|草根程序员|ReadingWithU'

# 判断是否有 “两点水” 这个字符串,使用 PY 自带函数

print('是否含有“两点水”这个字符串:{0}'.format(a.index('两点水') > -1))
print('是否含有“两点水”这个字符串:{0}'.format('两点水' in a))

输出的结果如下:

是否含有“两点水”这个字符串:True
是否含有“两点水”这个字符串:True

那么,如果使用正则表达式呢?

刚刚提到过,Python 给我们提供了 re 模块来实现正则表达式的所有功能,那么我们先使用其中的一个函数:

re.findall(pattern, string[, flags])

该函数实现了在字符串中找到正则表达式所匹配的所有子串,并组成一个列表返回,具体操作如下:

import re

# 设定一个常量
a = '两点水|twowater|liangdianshui|草根程序员|ReadingWithU'

# 正则表达式

findall = re.findall('两点水', a)
print(findall)

if len(findall) > 0:
    print('a 含有“两点水”这个字符串')
else:
    print('a 不含有“两点水”这个字符串')

输出的结果:

['两点水']
a 含有“两点水”这个字符串

从输出结果可以看到,可以实现和内置函数一样的功能,可是在这里也要强调一点,上面这个例子只是方便我们理解正则表达式,这个正则表达式的写法是毫无意义的。为什么这样说呢?

因为用 Python 自带函数就能解决的问题,我们就没必要使用正则表达式了,这样做多此一举。而且上面例子中的正则表达式设置成为了一个常量,并不是一个正则表达式的规则,正则表达式的灵魂在于规则,所以这样做意义不大。

那么正则表达式的规则怎么写呢?先不急,我们一步一步来,先来一个简单的,找出字符串中的所有小写字母。首先我们在 findall 函数中第一个参数写正则表达式的规则,其中 [a-z] 就是匹配任何小写字母,第二个参数只要填写要匹配的字符串就行了。具体如下:

import re

# 设定一个常量
a = '两点水|twowater|liangdianshui|草根程序员|ReadingWithU'

# 选择 a 里面的所有小写英文字母

re_findall = re.findall('[a-z]', a)

print(re_findall)

输出的结果:

['t', 'w', 'o', 'w', 'a', 't', 'e', 'r', 'l', 'i', 'a', 'n', 'g', 'd', 'i', 'a', 'n', 's', 'h', 'u', 'i', 'e', 'a', 'd', 'i', 'n', 'g', 'i', 't', 'h']

这样我们就拿到了字符串中的所有小写字母了。

二、字符集

好了,通过上面的几个实例我们初步认识了 Python 的正则表达式,可能你就会问,正则表达式还有什么规则,什么字母代表什么意思呢?

其实,这些都不急,在本章后面会给出对应的正则表达式规则列表,而且这些东西在网上随便都能 Google 到。所以现在,我们还是进一步加深对正则表达式的理解,讲一下正则表达式的字符集。

字符集是由一对方括号 “[]” 括起来的字符集合。使用字符集,可以匹配多个字符中的一个。

举个例子,比如你使用 C[ET]O 匹配到的是 CEO 或 CTO ,也就是说 [ET] 代表的是一个 E 或者一个 T 。像上面提到的 [a-z] ,就是所有小写字母中的其中一个,这里使用了连字符 “-” 定义一个连续字符的字符范围。当然,像这种写法,里面可以包含多个字符范围的,比如:[0-9a-fA-F] ,匹配单个的十六进制数字,且不分大小写。注意了,字符和范围定义的先后顺序对匹配的结果是没有任何影响的。

其实说了那么多,只是想证明,字符集一对方括号 “[]” 里面的字符关系是"或(OR)"关系,下面看一个例子:

import re
a = 'uav,ubv,ucv,uwv,uzv,ucv,uov'

# 字符集

# 取 u 和 v 中间是 a 或 b 或 c 的字符
findall = re.findall('u[abc]v', a)
print(findall)
# 如果是连续的字母,数字可以使用 - 来代替
l = re.findall('u[a-c]v', a)
print(l)

# 取 u 和 v 中间不是 a 或 b 或 c 的字符
re_findall = re.findall('u[^abc]v', a)
print(re_findall)

输出的结果:

['uav', 'ubv', 'ucv', 'ucv']
['uav', 'ubv', 'ucv', 'ucv']
['uwv', 'uzv', 'uov']

在例子中,使用了取反字符集,也就是在左方括号 “[” 后面紧跟一个尖括号 “^”,就会对字符集取反。需要记住的一点是,取反字符集必须要匹配一个字符。比如:q[^u] 并不意味着:匹配一个 q,后面没有 u 跟着。它意味着:匹配一个 q,后面跟着一个不是 u 的字符。具体可以对比上面例子中输出的结果来理解。

我们都知道,正则表达式本身就定义了一些规则,比如 \d,匹配所有数字字符,其实它是等价于 [0-9],下面也写了个例子,通过字符集的形式解释了这些特殊字符。

import re

a = 'uav_ubv_ucv_uwv_uzv_ucv_uov&123-456-789'

# 概括字符集

# \d 相当于 [0-9] ,匹配所有数字字符
# \D 相当于 [^0-9] , 匹配所有非数字字符
findall1 = re.findall('\d', a)
findall2 = re.findall('[0-9]', a)
findall3 = re.findall('\D', a)
findall4 = re.findall('[^0-9]', a)
print(findall1)
print(findall2)
print(findall3)
print(findall4)

# \w 匹配包括下划线的任何单词字符,等价于 [A-Za-z0-9_]
findall5 = re.findall('\w', a)
findall6 = re.findall('[A-Za-z0-9_]', a)
print(findall5)
print(findall6)

输出结果:

['1', '2', '3', '4', '5', '6', '7', '8', '9']
['1', '2', '3', '4', '5', '6', '7', '8', '9']
['u', 'a', 'v', '_', 'u', 'b', 'v', '_', 'u', 'c', 'v', '_', 'u', 'w', 'v', '_', 'u', 'z', 'v', '_', 'u', 'c', 'v', '_', 'u', 'o', 'v', '&', '-', '-']
['u', 'a', 'v', '_', 'u', 'b', 'v', '_', 'u', 'c', 'v', '_', 'u', 'w', 'v', '_', 'u', 'z', 'v', '_', 'u', 'c', 'v', '_', 'u', 'o', 'v', '&', '-', '-']
['u', 'a', 'v', '_', 'u', 'b', 'v', '_', 'u', 'c', 'v', '_', 'u', 'w', 'v', '_', 'u', 'z', 'v', '_', 'u', 'c', 'v', '_', 'u', 'o', 'v', '1', '2', '3', '4', '5', '6', '7', '8', '9']
['u', 'a', 'v', '_', 'u', 'b', 'v', '_', 'u', 'c', 'v', '_', 'u', 'w', 'v', '_', 'u', 'z', 'v', '_', 'u', 'c', 'v', '_', 'u', 'o', 'v', '1', '2', '3', '4', '5', '6', '7', '8', '9']

 

Python文件处理中的字符编码及字符集 UTF-8字符集是基于Unicode编码实现的兼容ASCII编码的变长字符编码,它可以表示全球所有语言的字符。这样可以确保文件读写时的字符编码和字符集与文件本身的编码和字符集一致,避免出现乱码等问题。UTF-8编码是一种变长编码,它可以使用1至4个字节来表示一个字符,可以表示Unicode中所有的字符。Python文件处理中的字符编码和字符集是非常重要的概念,它们会直接影响到文件的读写和处理。在进行文件处理时,应该尽可能地选择与文件本身一致的字符编码和字符集,以确保文件的正确性。 阅读详情

相关推荐

Python学习笔记--字符集

在例子中,使用了取反字符集,也就是在左方括号 “[” 后面紧跟一个尖括号 “^”,就会对字符集取反。,就是所有小写字母中的其中一个,这里使用了连字符 “-” 定义一个连续字符的字符范围。好了,通过上面的几个实例我们初步认识了 Python 的正则表达式,可能你就会问,正则表达式还有什么规则,什么字母代表什么意思呢?注意了,字符和范围定义的先后顺序对匹配的结果是没有任何影响的。,匹配所有数字字符,其实它是等价于 [0-9],下面也写了个例子,通过字符集的形式解释了这些特殊字符。举个例子,比如你使用。

热情、奔放、快乐编程! 276

【Python基础】关于字符编码(ASCII,GB2312,Unicode,UTF-8,UTF-16,UTF-32),有这一篇就够了!

计算机中储存的信息都是用二进制数表示的;而我们在屏幕上看到的英文、汉字等字符是二进制数转换之后的结果。通俗的说,按照何种规则将字符存储在计算机中,如’a’用什么表示,称为"编码";反之,将存储在计算机中的二进制数解析显示出来,称为"解码",如同密码学中的加密和解密。在解码过程中,如果使用了错误的解码规则,则导致’a’解析成’b’或者乱码。 1 基础知识 1.1 字符集(Charcater Set)与字符编码(Encoding) 字符集(Charcater Set或Charset):是一个系统支持的所有抽象

古韵悠长的博客 1万+

29 python 正则表达式

了解python中如何使用正则表达式,常用的方法

水滴爬呀爬 504

python学习之字符集:GBK,GB18030,Unicode,UTF-8

背景 最近在学习和使用python时经常会遇到一些关于字符编码问题;虽然解决了问题,但是一直没有认真梳理这方面的知识;所以,这次写这篇文章整理一下知识点;本文都是通过在网上寻找资料并自己通过代码验证,如有错误欢迎指正。 环境 python 3.6 基本概念 比特位 二进制的0或1称为1个bit比特 字节 8个bit组成1个字节byte 字符 根据使用的字符编码方式不同每个字符所占用的字节数不一样;...

python小小实践者的博客 8196

29、正则表达式与Python编程入门

本文介绍了正则表达式的基础知识及其在文本处理中的应用,同时讲解了Python编程的基础内容及其在多个领域的使用场景。重点讨论了正则表达式匹配机制、特殊字符的使用、贪婪与懒惰匹配策略,以及Python编程的优势、最佳实践和与正则表达式的结合使用。通过实际代码示例展示了如何利用Python进行系统管理、数据分析和机器学习任务,并提供了正则表达式在实际编程中的实用技巧和注意事项。

3a9bq4r8t2y的博客 57

创建可视化机房

(3)窗户位置创建好以后需要对窗户的墙面镂空位置进行修补,具体操作为,选中镂空位置的顶点(这里必须是选择一个平面的顶点,不要跨平面选择),实际操作如下图:选择点以后,鼠标右键,选择【从顶点创建边/面】,或者按F键,随后对其他镂空位置进行相同操作;(2)将【物体模式】修改为【编辑模式】,选中-x对应面的所有顶点,移动顶点位置,其他放小调整按照同理,找到选中对应面的所有顶点,移动位置即可;调整动画事件轴上的线,选中关键帧的时间,调整模型的位置或者旋转角度,具体根据插入关键帧菜单选择的项进行模型的相关调整。

SmileBu丿㦌的博客 2068

Python基础:字符集和编码

这种标准在文字不同的地区并不能很好地适配开来,并不完全通用,不易于不同文化之间的交流。如到了中国台湾,则制定了big5编码,到了中国大陆,则制定成gb2312,后来扩充成我们熟知的通用的GBK编码,为windows所默认。在现在看来,美制统一标准为ascii,即美国现行的信息交换标准代码,这是最通用的信息标准,目前为止定义了128个字符,包含delete和换行符,仅需7个二进制单位(即一个字节,用byte表示)就可以完成表示。电脑通过0.1的二进制进行运算,二进制可转化为十进制,进而实现更为复杂的运算。

weixin_73092858的博客 647

波克 上海 Unity开发笔试题 2024

主要分为四部分,如果没有准备好,不要点击笔试链接,进入就会自动开始。

z2014z的博客 3396

python基础(29):正则表达式

python基础

weixin_64197656的博客 357

SECS/GEM协议中的关键指令详解:从S1F1到S9F9的完整指南

本文详细解析了SECS/GEM协议中从S1F1到S9F9的关键指令,涵盖设备状态管理、控制诊断、报警处理等核心功能。通过实际案例和调试技巧,帮助开发者掌握半导体制造设备通信标准,解决SECS/GEM协议在实际工程应用中的通讯难题,提升生产线智能化水平。

weixin_26899659的博客 397

图像处理(12)--图像各种噪声及消除方法

文章目录结构1.什么是图像噪声2. 图像噪声来源3. 噪声分类及其消除方法3.1 高斯噪声及其消除方式3.1.1 如何确定一种噪声是高斯噪声3.1.2 高斯滤波消除高斯噪声3.1.3 高斯函数的重要性质3.2 瑞利噪声及其消除方式3.3 伽马(爱尔兰)噪声及其消除方式3.4 指数分布噪声及其消除方式3.5 均匀噪声及其消除方式3.6 脉冲(椒盐)噪声及其消除方式 1.什么是图像噪声 图像噪声是指...

ShaneHolmes 11万+

python正则表达式在线_python正则表达式

正则表达式正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。作用1.检测某个字符串是否符合规则.比如:判断手机号,身份证号是否合法2.提取网页字符串中想要的数据.比如:爬虫中,提取网站天气,信息,股票代码,星座运势等具体关键字在线测试工具正则...

weixin_39751076的博客 1719

基于FFT+BP神经网络/决策树的轴承故障诊断

基于FFT+BP神经网络/决策树的轴承故障诊断

天天酷科研的博客 132

Python学习从0到1 day29 Python 高阶技巧 ⑦ 正则表达式

比如,验证一个字符串是否是符合条件的电子邮箱地址,只需要配置好正则规则,即可匹配任意邮箱。规则为:^[\w-]+(\.[\w-]+)*@(qq|163|gmail)(\.[\w-]+)+&从被匹配字符串开头进行匹配,匹配成功返回匹配对象(包含匹配的信息),匹配不成功返回空。搜索整个字符串,找出匹配的。匹配QQ号,要求纯数字,长度5-11,第一位不为0。[1-9]匹配第一位,[0-9]匹配后面4到10位。规则为:^[0-9a-zA-Z]{6,10}$re.match(匹配规则,被匹配字符,串)

m0_73983707的博客 1192

2025年开源气象大模型的实现原理与实践指南

气象大模型在人工智能时代实现了革命性突破,通过深度学习技术以更低的计算成本达到甚至超越传统数值天气预报的精度。开源气象大模型的出现使得全球研究者和机构都能参与气象AI的创新。本文详细解析了开源气象大模型的实现原理,包括核心架构、数据准备、训练方法和实际预测流程,并提供了实践指南。核心架构主要采用Transformer、图神经网络和扩散模型,处理多模态数据融合和时空联合建模。数据体系构建涉及数据来源、预处理和增强策略。模型训练关键技术包括损失函数设计、分布式训练优化和训练过程监控。微调与领域适应策略包括迁移学

专注AI大模型,软件混淆,授权 1181

饥饿游戏搜索算法(HGS)详解:从生物激励到智能优化

饥饿游戏搜索算法(HGS)是一种受动物饥饿驱动觅食行为启发的智能优化算法。该算法通过模拟生物饥饿程度与觅食策略的关系,将个体适应度映射为饥饿感,并据此动态调整搜索行为。HGS的核心机制包括:1) 饥饿权重计算(W1/W2),2) 三种位置更新策略(随机探索、正向/负向协作),3) 自适应平衡参数E。算法通过迭代优化逐步改进解的质量,具有参数自适应、全局搜索能力强等特点,在复杂优化问题中表现出色。相比传统优化方法,HGS更注重个体内部状态对搜索行为的影响,实现了探索与开发的自然平衡。

qq_42212808的博客 155

python中正则表达式匹配年份_用Python中的正则表达式匹配日期?

这里有一种方法可以生成与所需格式的任何日期匹配的正则表达式(尽管您显然可以调整逗号是否可选,添加月份缩写,等等):years = r'((?:19|20)\d\d)'pattern = r'(%%s) +(%%s), *%s' % yearsthirties = pattern % ("September|April|June|November",r'0?[1-9]|[12]\d|30')thir...

weixin_42311672的博客 1846

ROSTCM6软件下载及语义网络分析详细操作教程(附网盘链接)

ROSTCM6是武汉大学沈阳教授研发编码的国内目前唯一的以辅助人文社会科学研究的大型免费社会计算平台。该软件可以实现微博分析、聊天分析、全网分析、网站分析、浏览分析、分词、词频统计、英文词频统计、流量分析、聚类分析等一系列文本分析。

m0_64336780的博客 4万+

中谷教育Python26~29笔记——正则表达式

正则表达式定义: 是一种小型的,高效专业化的编程语言,(在python中)它内嵌在python中,并通过re模块实现。 ——可以为想要匹配的相应字符串集值定规则 ——该字符串集可能包含英文语句,e-mail地址,命令或者任何你想要搞定的东西。 ——可以问诸如“这个字符串匹配该模式吗?” ——“在这个字符串中是否有部分匹配该模式呢?” ——你也可以使用re以各种方式来修改或分隔字符串。

BigerAndBiger的专栏 740

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

使用Python验证常见的正则表达式

导读:正则表达式(Regular Expression)通常被用来检索、替换那些符合某个模式(规则)的文本。此处的Regular即是规则、规律的意思,Regular Expression...

SeizeeveryDay的博客 2073

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

python 正则表达式

import re s = ''' 我的邮箱 laoqi@qq.com 则等待 ??laoq22i@qq11.com122 ''' # findall 2个参数 第一个: 正则表达式 第二个:被查找文本 re.findall('\w+@\w+\.com',s) ['laoqi@qq.com', 'laoq22i@qq11.com'] re.findall('a','ajdjajadja') ['a', 'a', 'a', 'a'] re.findall('ab','abjdjadbajaadja

jialan75的博客 4万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Python·算法·每日一题(2月29日)正则表达式匹配

Python·算法·每日一题(2月29日)正则表达式匹配

小刘码的博客 1303

2019-03-29 正则表达式

\d可以匹配一个数字\w可以匹配一个字母或数字\s可以匹配一个空格 \s+至少一个空格 >>> re.split(r'\s+', 'a b c')['a', 'b', 'c']>>> re.split(r'[\s\,\;]+', 'a,b;; c d')['a', 'b', 'c', 'd']A|B可以匹配A或B^表示行的开头,^\d表示必须以数...

atai2477的博客 160

python正则表达式

python正则表达式 什么是正则表达式? 正则表达式(Regular Expression)通常被用来检索、替换那些符合某个模式(规则)的文本。 此处的Regular即是规则、规律的意思,Regular Expression即“描述某种规则的表达式”之意。 本文收集了一些常见的正则表达式用法,方便大家查询取用,并在最后附了详细的正则表达式语法手册。 案例包括:「邮箱、身份证号、手机号码、固定电话、域名、IP地址、日期、邮编、密码、中文字符、数字、字符串」 Python如何支持正则? 我用的是pyt

qq_42992919的博客 923

python中如何使用正则表达式提取数据

以上为个人经验,希望能给大家一个参考。点击拿去50G+学习视频教程100+Python初阶、中阶、高阶电子书籍​​​​​​​。

ai520wangzha的博客 7573

【Python网络爬虫】python爬虫用正则表达式进行数据清洗与处理

在Python网络爬虫的数据清洗与处理过程中,正则表达式是一个非常强大的工具,它可以帮助我们从复杂的文本数据中提取出所需的信息。在Python中,re模块提供了对正则表达式的支持。

左手の明天的博客 1969
上一篇: python基础知识(28)线程和进程
ty_wink
博客等级 码龄4年 495粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值