python re库正则表达式用法 (二)

网络爬虫:Re库与正则表达式 介绍了正则表达式的相关概念,以及python中的re库对于正则表达式的应用 阅读详情

一、re模块

Python通过re模块提供对正则表达式的支持。

使用re的一般步骤是:

  • 1. 将正则表达式的字符串形式编译为Pattern实例
  • 2. 使用re库常用的功能函数处理文本并获得结果
  • 3. 对得到的结果进行其他的操作,获取想要的信息。
import re

# 将正则表达式编译成Pattern
pattern =re.compile( r'hello.*\!')

# 使用Pattern匹配文本,获得匹配结果,无法匹配时将返回None
match = re.match(pattern, 'hello world! Welcome to..')

if match:
    print(match.group())  # 根据结果进行其他操作
else:
    print("no match")
    

运行结果:

为什么要用r'....'(raw):正则表达式中用“\”表示转义,而python中也用“\”表示转义,当遇到特殊字符需要转义时,你要花费心思到底需要几个“\”,所以为了避免这个情况,使用原生字符串类型来书写正则表达式。

二、re.compile()

re.compile("strPattern"[, flags])

这个函数用于将字符串形式的正则表达式编译为Pattern对象。

第一个参数:正则表达式字符串

第二个参数:是匹配模式,取值可以使用或运算符'|'表示同时生效,比如re.I | re.M。也可以在正则表示式中指定匹配模式,例如:re.compile('pattern', re.I)等价于re.compile('(?i)pattern')

flag可选值有:

  • re.I(re.IGNORECASE): 忽略大小写(括号内是完整写法,下同)
  • re.M(MULTILINE): 多行模式,影响^'和'$'
  • re.S(DOTALL): 点任意匹配模式,改变'.'的行为
  • re.L(LOCALE): 使预定字符类 \w \W \b \B \s \S 取决于当前区域设定
  • re.U(UNICODE): 使预定字符类 \w \W \b \B \s \S \d \D 取决于unicode定义的字符属性
  • re.X(VERBOSE): 详细模式。这个模式下正则表达式可以是多行,忽略空白字符,并可以加入注释。
# pattern = re.compile( r'Hello.*\!', re.I)
pattern = re.compile( r'(?i)Hello.*\!')

match = re.match(pattern, 'hello world! Welcome to..')

if match:
    print(match.group())
else:
    print("no match")
    

对于re.X的用法下面两个表达式是等价的

regex_1 = re.compile(r"""\d +  # 数字部分
                         \.    # 小数点部分
                         \d *  # 小数的数字部分""", re.X)
regex_2 = re.compile(r"\d+\.\d*")

三、re常用函数

★1、re.match() 

语法:re.match(pattern, string[, flags])         这里flags和上面re.compile()的取值相同,同下

属性:

  • string: 匹配时使用的文本。
  • re: 匹配时使用的Pattern对象。
  • pos: 文本中正则表达式开始搜索的索引。值与Pattern.match()和Pattern.seach()方法的同名参数相同。
  • endpos: 文本中正则表达式结束搜索的索引。值与Pattern.match()和Pattern.seach()方法的同名参数相同。
  • lastindex: 最后一个被捕获的分组在文本中的索引。如果没有被捕获的分组,将为None。
  • lastgroup: 最后一个被捕获的分组的别名。如果这个分组没有别名或者没有被捕获的分组,将为None。

方法:

  • group([group1, …]): 获得一个或多个分组截获的字符串;指定多个参数时将以元组形式返回。group1可以使用编号也可以使用别名;编号0代表整个匹配的子串;不填写参数时,返回group(0);没有截获字符串的组返回None;截获了多次的组返回最后一次截获的子串。
  • groups([default]): 以元组形式返回全部分组截获的字符串。相当于调用group(1,2,…last)。default表示没有截获字符串的组以这个值替代,默认为None。
  • groupdict([default]): 返回以有别名的组的别名为键、以该组截获的子串为值的字典,没有别名的组不包含在内。default含义同上。
  • start([group]): 返回指定的组截获的子串在string中的起始索引(子串第一个字符的索引)。group默认值为0。
  • end([group]): 返回指定的组截获的子串在string中的结束索引(子串最后一个字符的索引+1)。group默认值为0。
  • span([group]): 返回(start(group), end(group))。
  • expand(template): 将匹配到的分组代入template中然后返回。template中可以使用\id或\g、\g引用分组,但不能使用编号0。\id与\g是等价的;但\10将被认为是第10个分组,如果你想表达\1之后是字符'0',只能使用\g<1>0。
pattern = re.compile( r'(\w+)\s(\w+)(?P<sign>.*)')

match = re.match(pattern, 'hello world!')

print ("match.string:", match.string)
print ("match.re:", match.re)
print ("match.pos:", match.pos)
print ("match.endpos:", match.endpos)
print ("match.lastindex:", match.lastindex)
print ("match.lastgroup:", match.lastgroup)
 
print ("match.group(1,2):", match.group(1, 2))
print ("match.groups():", match.groups())
print ("match.groupdict():", match.groupdict())
print ("match.start(2):", match.start(2))
print ("match.end(2):", match.end(2))
print ("match.span(2):", match.span(2))
print (r"match.expand(r'\2 \1\3'):", match.expand(r'\2 \1\3'))

注意:这个方法并不是完全匹配。当pattern结束时若string还有剩余字符,仍然视为成功。想要完全匹配,可以在表达式末尾加上边界匹配符'$'。

2、re.search()

语法:re.search(pattern, string[, flags])

扫描整个字符串并返回第一个成功的匹配对象,否则返回None。

pattern = re.compile(r'(h.*o)\s')
search = re.search(pattern, 'hello world!')
if search:
    print(search.group())
else:
    print('no match')

3、re.split()

语法:re.split(pattern, string[, maxsplit])

  • 按照能够匹配的子串将string分割后返回列表。
  • maxsplit用于指定最大分割次数,不指定将全部分割。
pattern = re.compile(r'\s')
split = re.split(pattern, 'hello world! How are you?')
split

4、re.findall()

语法:re.findall(pattern, string[, flags]):

  • 搜索string,以列表形式返回全部能匹配的子串。
pattern = re.compile(r'\d+')
findall = re.findall(pattern, 'hello11world2How33are4you05')
findall

5、re.finditer()

语法:re.finditer(pattern, string[, flags])

  • 搜索string,返回一个顺序访问每一个匹配结果的迭代器。
pattern = re.compile(r'\d+')
finditer = re.finditer(pattern, 'hello11world2How33are4you05')
print(finditer)
for i in finditer:
    print(i.group())

6、re.sub()

语法: re.sub(pattern, repl, string[, count])

使用repl替换string中每一个匹配的子串后返回替换后的字符串。

  • 当repl是一个字符串时,可以使用\id或\g、\g引用分组,但不能使用编号0。
  • 当repl是一个方法时,这个方法应当只接受一个参数(Match对象),并返回一个字符串用于替换(返回的字符串中不能再引用分组)。 count用于指定最多替换次数,不指定时全部替换。
pattern = re.compile(r'(\w+)\s(\w+)')
repl = r'\2 \1'
str = r'hello world! How are you?'
print(re.sub(pattern,repl,str))
def fun(m):
    return m.group(1).title() + ' ' + m.group(2).title()  # title():单词首字母大写
print(re.sub(pattern,fun,str))

7、re.subn()

语法:re.sub(pattern, repl, string[, count])

  • 返回替换的次数
pattern = re.compile(r'(\w+)\s(\w+)')
repl = r'\2 \1'
str = r'hello world! How are you?'
print(re.subn(pattern,repl,str))
def fun(m):
    return m.group(1).title() + ' ' + m.group(2).title()  # title():单词首字母大写
print(re.subn(pattern,fun,str))

 

 

详解python之re.split()、re.search()、re.match() 详解python之re.split() 阅读详情

相关推荐

字符串 KMP算法与AC自动机算法

文章目录KMP题目集亲和串PeriodNumber Sequence KMP 题目集 亲和串 亲和串 题目大意 人随着岁数的增长是越大越聪明还是越大越笨,这是一个值得全世界科学家思考的问题,同样的问题Eddy也一直在思考,因为他在很小的时候就知道亲和串如何判断了,但是发现,现在长大了却不知道怎么去判断亲和串了,于是他只好又再一次来请教聪明且乐于助人的你来解决这个问题。 亲和串的定义是这样的:给定两个字符串s1和s2,如果能通过s1循环移位,使s2包含在s1中,那么我们就说s2 是s1的亲和串。 Input

603

re模块最全常用正则表达式大全

re模块最全常用正则表达式大全

ldgk3ekkd的博客 3183

Python re库

import re &amp;nbsp;&amp;nbsp;&amp;nbsp;#导包 #正则模块,针对字符串 #正则本身其实就是一种小型的,高度专业化的编程语言,底层是由C语言编写的匹配引擎执行,效率高,速度快 1、正则内容 **特殊字符**: \w 数字,字母,下划线 \W 非数字字母下划线 \b 单词边界 \B \s 空格 \S 非空格...

u014369877的博客 3151

正则表达式(Re),看这一篇就够了

正则表达式,看这一篇文章就够了!

weixin_45075031的博客 8714

Python 内置模块之 re 库,一文搞定正则表达式初阶用法,滚雪球学 Python 第 13 篇

一文搞定 Python 正则表达式初阶用法

梦想橡皮擦,专栏100例写作模式先行者,现象级专栏 《Python 爬虫 100 例》作者、《滚雪球学 Python 专栏》原创者 1万+

Matlab Arduino 硬件支持包安装 MATLAB_Support_Package_for_Arduino_Hardware

Matlab Arduino硬件支持包离线安装

weixin_43283734的博客 2840

Python之re库用法细讲

博文中详细介绍了Python的re库用法,其中包含了match()、search()、findall()、sub()、split()方法

程序员小十一的博客 1万+

量子阱技术解析:从基础原理到前沿应用

本文深入解析量子阱技术,从微观“能量游泳池”的基础原理出发,阐释了其通过限制电子实现能级量子化,从而精确调控发光波长的核心机制。文章详细探讨了量子阱在半导体激光器和LED中的革命性应用,如实现低阈值电流与高亮度显示,并展望了其在能带工程及量子级联激光器等前沿领域的发展与挑战。

weixin_29267307的博客 282

Python中的Re库

一、正则表达式 正则表达式(regular expression)(regex)(RE),用来简洁表达一组字符的表达式,由字符和操作符构成。 通用的字符串表达框架 简洁表达一组字符串的表达式 针对字符串表达“简洁”和“特征”思想的工具 判断某字符串的特征归属 正则表达式常用于文本处理 表达文本类型的特征(病毒、入侵等) 同时查找或替换一组字符串 匹配字符串的全部或部分 正则表达式的使用 编译:将符合正则表达式语法的字符串转换为正则表达式特征 正则表达式的常用操作符 操作符 说

人人为我,我为人人 7070

深入C6678启动流程:从BootRom参数表到多核镜像部署的完整解析

本文深入解析TMS320C6678 DSP的启动流程,从BootRom参数表到多核镜像部署的全过程。详细介绍了七种启动模式的工程选择、多核镜像构建技巧以及二级引导策略,帮助开发者掌握C6678的启动机制与调试方法,提升嵌入式系统开发效率。

weixin_30505225的博客 611

Mediapipe手势识别实战——基于关节角度计算实现动态手势分类

本文详细介绍了如何利用Mediapipe进行手势识别,通过计算手指关节弯曲角度实现动态手势分类。文章从基础原理出发,讲解了关节角度计算的数学方法,并提供了Python实现代码。同时,还分享了数字手势和OK手势的识别实战经验,以及性能优化和工程实践中的关键技巧,帮助开发者快速掌握实时手势识别技术。

weixin_26891599的博客 403

python正则表达式:re库的使用

一、re re库是Python中使用正则表达式需要用到的库,是Python的标准库,无需安装,直接导入 二、正则表达式的表示类型 1、raw string类型(原生字符串类型):如r’[1-9]\d{5}’ 2、string类型,更加繁琐(将斜杠表示为转义字符):如‘[1-9]\d{5}’ 三、re库的功能函数 pattern:正则表达式的字符串或原生字符串 string:待匹配字符串 flags:正则表达式使用时的控制标记 flags常用取值: (1)re.I或re.IGNORECASE:忽略正则表达式

qq_41817925的博客 1万+

CAN-do-paser:Java开发的CAN总线数据帧解析库

CAN总线数据帧使用DBC文件信息解析为物理量,基于Java开发的数据解析工具。

佳瑞的博客 1133

Python Re库的基本使用

Re库的基本使用 Re库是python库的标准库,主要用于字符串匹配 正则表达式的表示类型:r’text’ Re库的主要功能函数 函数 说明 re.search() 在一个字符串中搜索匹配正则表达式的第一个位置,返回match对象 re.match() 从一个字符串的开始位置起匹配正则表达式,返回match对象 re.findall() 搜索字符串,以列表类型返回全部能匹配的子串 re.split() 将一个字符串按照正则表达式匹配结果进行分割,返回列表类型 re.findi

dave的技术成长之路 1万+

LCD工程师必看:Pixelclock、Mipi Clk计算全解析(附实用公式)

本文为LCD工程师详细解析了像素时钟(Pixelclock)与MIPI时钟(Mipi Clk)的核心计算方法。文章从时序参数构成入手,通过实战公式推导,系统阐述了从屏幕分辨率、刷新率到最终MIPI速率的高效计算链路,并提供了实用的调试思路与排查清单,帮助工程师快速解决画面撕裂、闪烁等常见问题。

weixin_29266679的博客 388

《大数据: Hive 交互命令和常用配置》

一、Hive 交互命令 1. 首先解决一个可能发生的问题 (log4 jar包冲突) 我这里解决方法就是删除一个,我删的是hive下的包 yexiang@hadoop1:<hive>$ hive SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/opt/soft/apache-hive-2.3.7-bin/lib/log4j-slf4j-impl-2.6.2.ja.

yexiang优快云的专栏 287

Python中的re库详细用法与代码解析

正则表达式(Regular Expression,简称Regex)是一种文本模式描述语言,用于定义具有特定格式的字符串规则。它如同数学中的方程式,但操作对象是文本模式而非数值。a匹配字符aa+匹配一个或多个连续的aa?匹配零个或一个aa|b匹配a或b^start匹配以start开头的字符串end$匹配以end结尾的字符串Python的re库为我们提供了强大的文本处理能力,通过正则表达式,我们可以轻松应对各种复杂的文本匹配、提取、替换和验证任务。从简单的字符串检查到复杂的模式匹配,re。

橙色小博的博客,励志在人工智能领域发光发热! 3434

鸿宇多用户商城user.php RCE漏洞复现

鸿宇多用户商城 user.php 存在任意命令执行漏洞,攻击者可通过该漏洞在服务器端任意执行代码,写入后门,获取服务器权限,进而控制整个web服务器。

0xSec 1621

python中re是什么库_Python正则表达式和re库知识点总结

正则表达式是定义搜索模式的字符序列。通常这种模式被字符串搜索算法用于字符串上的“查找”或“查找和替换”操作,或者用于输入验证。1. 正则表达式的语法. 表示任何单个字符[] 字符集,对单个字符给出取值范围[^] 非字符集,对单个字符给出排除范围*前一个字符0次或者无限次扩展+前一个字符1次或无限次扩展?前一个字符0次或1次扩展|左右表达式任意一个{m}扩展前一个字符m次{m,n}扩展前一个字符m至...

weixin_39540023的博客 3197

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

python re库 详解(正则表达式)

python re库 详解(正则表达式) 说明 则表达式(英文名称:regular expression,regex,RE)是用来简洁表达一组字符串特征的表达式。最主要应用在字符串匹配中。 re.compile r raw strings,不进行转义 python xx=re.compile(r’“abc“,string1)里面r的作用 r表示其后的字符串按原样表示,不使用转义字符 ...

孙天成-全栈工程师 7万+

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

python模块re库的全部用法_re库的用法介绍

re库是python的标准库re库采用raw string类型表示正则表达式,表示为:r'test'原生字符串(raw string)是不包含转义符的字符串例子:爬取好房通的网站优优好房的房源时用到了re库解析文本,raw string:r'[1-9]\d{5}'r'\d{3}-\d{8}|\d{4}-\d{7}'string:'[1-9]\\d{5}''\\d{3}-\\d{8}|\\d{4}-...

weixin_34051133的博客 1742

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

python网页爬虫之re库及正则表达式(含实例)

python网页爬虫之re库及正则表达式 正则表达式 regular expression 简称“RE” 正则表达式是用来简洁表达一组字符串的表达式。 ‘PY’ ‘PYY’ ‘PYYYYY…’ 正则表达式: PY+ ‘PY’开头,后续存在不多于10个字符,后续字符不能是‘P’或‘Y’ ‘PYABC’ √ ‘PYKXYZ’ × 正则表达式: PY[^PY]{0,10} 正则表达式: 1)通用的字符串...

Slime 4755

基于pycharm的正则表达式Re库使用教程

基于pycharm的正则表达式Re库使用教程正则表达式语法Re库的基本使用Match对象Match对象的属性Match对象的方法正则表达式的常用方法re.search()re.match()re.findall()re.split()re.finditer()re.sub()re.compile() 正则表达式语法 正则表达式在编程语言、数据库等领域都应用广泛,可以自己总结知识点,等忘记了再回来查看,当然也有专门的正则表达式网站。 Re库的基本使用 Re库是Python的标准库,不用我们安装,其主要用于字

❀雾里看花花里看雾❀ 4719

Python 爬虫正则表达式和re库,及re库的基本使用,提取单个页面信息

正则表达式是处理字符串的强大工具,它有自己特定的语法结构,有了它,实现字符串的检索、替换、匹配验证都不在话下,正则表达式在所有编程里通用,所以不仅仅是python使用。2:第二个信息,电影名称,有很多地方,但是我们选个唯一明显不重复的,alt= 后面是标签里唯一的,整个标签里面就一个信息,所以这里比较简单,这时正则表达式为。re.findall()在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果有多个匹配模式,则返回元组列表,如果没有找到匹配的,则返回空列表。em是唯一的,比较简单。

2554

python re库

匹配分割string maxsplit是允许被分割成几个子串,默认是0最大化字串,如果是1则是从原本字符串中切出一个字串,其他字串整串返回。1. 如果正则表达式中有多个括号时,列表的元素为多个字符组合成的元组,元组中的字符串格式与括号数对应,内容与正则表达式顺序对应。3.当给出的正则表达式不带括号的时候,列表的元素为字符串,此时字符串为整个正则表达式匹配的内容。2.正则表达式中只有一个括号,列表元素为字符串时,则内容和括号中的正则表达式对应。该函数将创建一个正则表达式的对象,可以实现更有效率的复用。

ShorttubeLy的博客 9910

正则表达式Re的用法(含实例)

正则表达式 通用的字符串表达框架 简洁表达一组字符串的表达式 针对字符串表达“简洁”和“特征”思想的工具 判断某字符串的特征归属 正则表达式的常用操作符 操作符 说明 实例 . 表示任何单字符 [ ] 字符集,对单个字符给出取值范围 [abc]表示a、b、c,[a-z]表示a到z单个字符 [^ ] 非字符集,对单个字符给出排除范围 [^abc]表示非a或b或c的单个字...

qq_43131852的博客 3526
上一篇: 正则表达式基本语法规则(一)
下一篇: python绘制loss和accuracy曲线
Answerlzd
博客等级 码龄9年 67粉丝 119原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值