千家信息网

Python的Re模块怎么用

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍Python的Re模块怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、基础语法总结1.1、匹配单个字符a . d D w W s S [...] [^.
千家信息网最后更新 2026年11月01日Python的Re模块怎么用

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

一、基础语法总结

1.1、匹配单个字符

a . d D w W s S [...] [^...]

匹配单个字符(.)

规则:匹配除换行之外的任意字符

In [24]: re.findall("f.o","foo is not fao")  Out[24]: ['foo', 'fao']

匹配任意(非)数字字符(d D)

d [0-9] D [^0-9]

匹配任意(非)普通字符(w W)

w 普通字符 包括[_0-9A-Za-z]同时也包括汉字

W 非普通字符

匹配任意(非)空字符(s S)

s 匹配任意空字符 [ ]

S 匹配任意非空字符

匹配字符集合([...])

[A-Z][a-z][0-9][_123a-z]

匹配字符集([^...])

规则:字符集取非,除列出的字符之外的任意一个字符

[^abc] --> 除a b c之外任意字符

1.2、匹配多个字符

* 匹配0次或者多次

+ 匹配1次或者多次

? 匹配0次或者1次

{m} 匹配m次

{m,n} 匹配m次到n次区间内的任意一次

1.3、匹配位置

^ 匹配开始位置

$ 匹配结束位置

A 匹配开始位置

Z 匹配结束位置

匹配单词边界位置(一般用于首字母大写的匹配)

B 匹配非单词边界问题

1.4、转义

在正则表达式中有一类特殊字符需要转移,只需要在特殊字符之间加上 表示转移即可

. * + ? ^ $ [] {} () |

1.5、子组

使用() 可以为正则表达式建立内部分组,子组为正则表达式的一部分,可以看做一个内部整体。

In [61]: re.search(r"(https|http|ftp)://w+.w+.(com|cn)","https://www.baidu.com").group(0) Out[61]: 'https://www.baidu.com' In [62]: re.search(r"(https|http|ftp)://w+.w+.(com|cn)","https://www.baidu.com").group(1) Out[62]: 'https'

1.6、贪婪模式和非贪婪模式

正则表达式的重复匹配总是尽可能多的向后匹配更多的内容。 贪婪模式包括:* + ? {m,n}

非贪婪模式:尽可能少的匹配内容 贪婪模式转换为非贪婪模式:*? +? ?? {m,n}?

In [106]: re.findall(r"ab+?","abbbbbbbb") Out[106]: ['ab'] In [107]: re.findall(r"ab??","abbbbbbbb") Out[107]: ['a']

二、Re模块

接下来我所有函数里面的参数解释如下:

  • pattern:正则表达式

  • string:目标字符串

  • pos:截取目标字符串起始位置

  • endpose:截取目标字符串结束位置

  • flags:功能标志

  • replaceStr:替换的字符串

  • max:最多替换几处(默认替换全部)

有上图我们看出来,接下来我们要将的Python中re模块、regex对象、match对象三者之间是存在一定关系的。

  1. 鸿蒙官方战略合作共建--HarmonyOS技术社区

  2. re模块的compile方法返回一个regex对象

  3. re模块和regex对象的finditer()、fullmatch()、match()、search()等方法返回一个match对象

  4. 他们分别有自己的属性和方法

2.1、compile

regex = re.compile(pattern, flags = 0) # 生成正则表达式对象

2.2、findall

re.findall(pattern,string,pos,endpose) # 从目标字符串中匹配所有符合条件的内容

2.3、split

re.split(pattern,string,flags) #根据正则表达式对目标字符串进行分割 In [79]: re.split(r's+',"Hello World") Out[79]: ['Hello', 'World']

2.4、sub

re.sub(pattern,replaceStr,string,max,flags) In [80]: re.sub(r's+',"##","hello world") Out[80]: 'hello##world'

2.5、subn

re.subn(pattern,replaceStr,string,max,flags) #功能同sub,但是返回值返回替换后的字符串和替换了几处 In [80]: re.sub(r's+',"##","hello world") Out[80]: ('hello##world',1)

2.6、finditer

re.finditer(pattern,string) #使用正则表达式匹配目标字符串,返回一个match对象,match对象调用group()之后才能拿到值 In [87]: it = re.finditer(r'd+',"2014nianshiqiqngduo 08aoyun 512dizhen") In [88]: for i in it:  ....: print(i)  ....:  <_sre.SRE_Match object at 0x7f0639767920> <_sre.SRE_Match object at 0x7f0639767ac0> <_sre.SRE_Match object at 0x7f0639767920> In [93]: it = re.finditer(r'd+',"2014nianshiqiqngduo 08aoyun 512dizhen") In [94]: for i in it:  ....: print(i.group())  ....:  2014 08 512

2.7、fullmatch

fullmatch(pattern,string,flags) #完全匹配目标字符串,相当于加了^ 和 $

2.8、match

re.match(pattern,string,flags) #匹配目标字符串开头的位置

2.9、search

re.search(pattern,string,flags) # 正则表达式匹配目标字符串,只匹配***处

三、一些练习题

3.1、匹配首字母大写的单词

import re f = open('test.txt') pattern= r'[A-Z][a-zA-Z]*s*' # pattern= r'[A-Z]S' L = [] for i in f:  L += re.findall(pattern,i) print(L)

test.txt文档内容如下:

Hello World -12.6 Nihao 123 How are you -12 1.24 asdk 34%, 占比 1/2 2003 - 2005./%

3.2、匹配数字(正数、负数、小数、百分数、分数)

import re pattern = "-?d+((/?d+)|((.)?d+)|((%)?))" f = open('test.txt') l = [] for line in f:  l += re.finditer(pattern,line) for i in l:  print(i.group())

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

字符 字符串 位置 正则 目标 表达式 对象 模块 贪婪 内容 模式 普通 单词 方法 空字符 特殊 接下来 之间 功能 单个 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广东万易互联网科技有限公司惠州分公司 山东特亿宝互联网科技有限公司 中关村互联网科技集团 互联网科技行业发展 金融科技 互联网金融 万易互联网科技有限公司 壹账通互联网科技 互联网高科技股票 互联网科技汛 中国最先进互联网科技公司 小米互联网科技园设置 承德科技产业互联网发展 语蝶互联网科技有限公司 花神(南京)互联网科技有限公司 宜昌元轩互联网科技有限公司 广州百诚互联网科技有限公司官网 半导体行业属于互联网高科技类吗 银川新华互联网科技学校是国营吗 互联网金融金融科技 六子台科技互联网展会 中智农互联网科技 互联网科技小贷 太原新华互联网科技学校怎么样 洛阳昕诺飞互联网科技有限公司 如何创新互联网科技 翼展科技 首家互联网医院 深圳市罗太互联网科技有限公司 上海互联网科技公司ppt 科技互联网行业投资研究 福仕德教育科技互联网
0