千家信息网

Python正则表达式怎么用

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍Python正则表达式怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!正则表达式是处理字符串的强大工具。作为一个概念而言,正则表达式对于Python来说并不
千家信息网最后更新 2026年11月01日Python正则表达式怎么用

这篇文章主要介绍Python正则表达式怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

正则表达式是处理字符串的强大工具。作为一个概念而言,正则表达式对于Python来说并不是独有的。但是,Python中的正则表达式在实际使用过程中还是有一些细小的差别。

正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。

Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式。

re 模块使 Python 语言拥有全部的正则表达式功能。

compile 函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象。该对象拥有一系列方法用于正则表达式匹配和替换。

re 模块也提供了与这些方法功能完全一致的函数,这些函数使用一个模式字符串做为它们的第一个参数。

1、查找第一个匹配串

import res='i love python very much'pat='python'r=re.search(pat,s)print(r.span())#(7,13)

2、查找所有1

import res='山东省潍坊市青州第1中学高三1班'pat='1'r=re.finditer(pat,s)for i in r: print(i) # # 

3、\d匹配数字[0-9]

import res='一共20行代码运行时间13.59s'pat=r'\d+'#+表示匹配数字(\d表示数字的通用字符)1次或多次r=re.findall(pat,s)print(r)#['20','13','59']

我们想保留13.59而不是分开,请看4

4、?表示前一个字符匹配0或1次

import res='一共20行代码运行时间13.59s'pat=r'\d+\.?\d+'#?表示匹配小数点(\.)0次或1次r=re.findall(pat,s)print(r)#['20','13.59']

5、^匹配字符串的开头

import res='This module provides regular expression matching operations similar to those found in Perl'pat=r'^[emrt]' #查找以r=re.findall(pat,s)print(r)# [],因为字符串的开头是字符`T`,不在emrt匹配范围内,所以返回为空

6、re.I 忽略大小写

import res='This module provides regular expression matching operations similar to those found in Perl'pat=r'^[emrt]' #查找以r=re.compile(pat,re.I).search(s)print(r)#  表明字符串的开头在匹配列表中

7、使用正则提取单词

这是不准确版本,请参看第9个

import res='This module provides regular expression matching operations similar to those found in Perl'pat=r'\s[a-zA-Z]+'r=re.findall(pat,s)print(r) #[' module', ' provides', ' regular', ' expression', ' matching', ' operations', ' similar', ' to', ' those', ' found', ' in', ' Perl']

8、只捕获单词,去掉空格

使用()捕获,这是不准确版本,请参看第9个

import res='This module provides regular expression matching operations similar to those found in Perl'pat=r'\s([a-zA-Z]+)'r=re.findall(pat,s)print(r)#['module', 'provides', 'regular', 'expression', 'matching', 'operations', 'similar', 'to', 'those', 'found', 'in', 'Perl']

9、补充上第一个单词

上面第8,看到提取单词中未包括第一个单词,使用?表示前面字符出现0次或1次,但是此字符还有表示贪心或非贪心匹配含义,使用时要谨慎。

import res='This module provides regular expression matching operations similar to those found in Perl'pat=r'\s?([a-zA-Z]+)'r=re.findall(pat,s)print(r)#['This', 'module', 'provides', 'regular', 'expression', 'matching', 'operations', 'similar', 'to', 'those', 'found', 'in', 'Perl']

10、使用split函数直接分割单词

使用以上方法分割单词,不是简洁的,仅仅为了演示。分割单词最简单还是使用split函数。

import res = 'This module provides regular expression matching operations similar to those found in Perl'pat = r'\s+'r = re.split(pat,s)print(r)#['This', 'module', 'provides', 'regular', 'expression', 'matching', 'operations', 'similar', 'to', 'those', 'found', 'in', 'Perl']

11、提取以m或t开头的单词,忽略大小写

下面出现的结果不是我们想要的,原因出在 ?上!

import res='This module provides regular expression matching operations similar to those found in Perl'pat=r'\s?([mt][a-zA-Z]*)' # 查找以r=re.findall(pat,s)print(r)#['module', 'matching', 'tions', 'milar', 'to', 'those']

12、使用^查找字符串开头的单词

综合11和12得到所有以m或t开头的单词

import res='This module provides regular expression matching operations similar to those found in Perl'pat=r'^([mt][a-zA-Z]*)\s' # 查找以r=re.compile(pat,re.I).findall(s)print(r) #['This']

13、先分割,再查找满足要求的单词

使用match表示是否匹配

import res='This module provides regular expression matching operations similar to those found in Perl'pat=r'\s+'r=re.split(pat,s)res=[i for i in r if re.match(r'[mMtT]',i)]print(res)#['This', 'module', 'matching', 'to', 'those']

14、贪心匹配

尽可能多的匹配字符

import recontent='ddedadsad
graph
bb
math
cc'pat=re.compile(r"
(.*)
") #贪婪模式m=pat.findall(content)print(m)#['graph
bb
math']

15、非贪心匹配

与14相比,仅仅多了一个问号(?),得到结果完全不同。

import recontent='ddedadsad
graph
bb
math
cc'pat=re.compile(r"
(.*?)
") #贪婪模式m=pat.findall(content)print(m)#['graph', 'math']

与14比较可知,贪心匹配和非贪心匹配的区别,后者是字符串匹配后立即返回,见好就收。

16、含有多种分割符

使用split函数

import recontent = 'graph math,,english;chemistry' #这种pat=re.compile(r"[\s\,\;]+") #贪婪模式m=pat.split(content)print(m)#['graph', 'math', 'english', 'chemistry']

17、替换匹配的子串

sub函数实现对匹配子串的替换

import recontent="hello 12345, hello 456321" pat=re.compile(r'\d+') #要替换的部分m=pat.sub("666",content)print(m)#hello 666, hello 666

18、爬取百度首页标题

import refrom urllib import request #爬虫爬取百度首页内容data=request.urlopen("http://www.baidu.com/").read().decode() #分析网页,确定正则表达式pat=r'(.*?)'result=re.search(pat,data)print(result)#

下面是知识点分享

19、常用元字符总结

. 匹配任意字符
^ 匹配字符串始位置
$ 匹配字符串中结束的位置
* 前面的原子重复0次1次多次
? 前面的原子重复一次或者0次
+ 前面的原子重复一次或多次
{n} 前面的原子出现了 n 次
{n,} 前面的原子至少出现 n 次
{n,m} 前面的原子出现次数介于 n-m 之间
( ) 分组,需要输出的部分

20、常用通用字符总结

\s 匹配空白字符
\w 匹配任意字母/数字/下划线
\W 和小写 w 相反,匹配任意字母/数字/下划线以外的字符
\d 匹配十进制数字
\D 匹配除了十进制数以外的值
[0-9] 匹配一个0-9之间的数字
[a-z] 匹配小写英文字母
[A-Z] 匹配大写英文字母

以上是"Python正则表达式怎么用"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

字符 正则 单词 表达式 字符串 函数 数字 模式 原子 开头 字母 贪婪 内容 方法 模块 版本 下划线 之间 代码 位置 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 咖啡豆 疫情对互联网科技公司影响 美国互联网科技巨头监管 北京互联网科技公司 科技互联网创业计划书 一五八零互联网科技 海南购全球互联网科技 银川新华互联网科技学校地址 互联网科技寓意 玉溪新华互联网科技好不好 互联网科技如何创业 江苏互联网智能科技软件 广州梦谷互联网科技有限公司领导 世界互联网科技成果奖 互联网高科技行业有哪些企业 互联网界的黑科技 山东蛋芒互联网科技有限公司 上海互联网科技园景观 优雇互联网科技有限公司 广州全民伙伴互联网科技有限公司 为想互联网科技怎么样 疫情对互联网科技公司影响 网络科技有限互联网 科技服务与互联网 汉立互联网科技有限公司联系电话 卫星互联网科技股票 重庆威客帮互联网科技 中国航天科技大学国际工业互联网 本届互联网博览会上的黑科技 中和天地互联网科技有限公司
0