首页 > 编程语言 >python3正则-多匹配函数

python3正则-多匹配函数

时间:2023-04-15 12:44:41浏览次数:32  
标签:匹配 string pattern 正则 result print findall python3

1、介绍
这里介绍findall和finditer两个函数。

2、findall函数

findall(pattern, string, flags=0)
  • pattern,正则表达式
  • string,待处理字符串
  • flags,标志,处理模式
  • 返回类型为list,如果不存在匹配,返回空列表[]。如果存在匹配,则返回全部匹配项,这里需要注意()的影响

2.1 无()

import re

# pattern = "abc"
# result = re.findall(pattern=pattern, string="-abcdefabc")
# print(result)
# print(type(result))
"""
['abc', 'abc']
<class 'list'>
"""

当没有()时,是将pattern表示的规则作为整体进行匹配

2.2 存在一个()

# pattern = "(a)bc"
# result = re.findall(pattern=pattern, string="-abcdefabc")
# print(result)
# print(type(result))
"""
['a', 'a']
<class 'list'>
"""

当存在一个()时,是将pattern表示的规则作为整体进行匹配,但是仅将pattern中()包含的部分作为结果,此时的元素仍是str

2.3 存在多个并列的()

pattern = "(a)(b)c"
result = re.findall(pattern=pattern, string="-abcdefabc")
print(result)
print(type(result))
"""
[('a', 'b'), ('a', 'b')]
<class 'list'>
"""

当存在多个并列的()时,是将pattern表示的规则作为整体进行匹配,但是仅将pattern中()包含的部分作为结果,此时的元素仍是tuple

2.4 存在嵌套的()

pattern = "((abc)(def)123)(---)c"
result = re.findall(pattern=pattern, string="abcdef123---c")
print(result)
print(type(result))
"""
[('abcdef123', 'abc', 'def', '---')]
<class 'list'>
"""

当存在嵌套的()时,会从外到内,从左到右进行对匹配项编号

2.5 存在个数不定的()匹配

pattern = "(([^0-9])*123)(.*)c"
result = re.findall(pattern=pattern, string="abcdef123-+-c")
print(result)
print(type(result))
"""
[('abcdef123', 'f', '-+-')]
<class 'list'>
"""
  • 外部存在个数不定的()匹配,参照2.2
  • 内部存在个数补丁的()匹配,只会输出其最后一次匹配的内容

3、finditer函数

finditer(pattern, string, flags=0)
  • pattern,正则表达式
  • string,待处理字符串
  • flags,标志,处理模式
  • 返回类型为callable_iterator,其处理过程和findall相同,区别在于返回的是可迭代类型对象

标签:匹配,string,pattern,正则,result,print,findall,python3
From: https://www.cnblogs.com/wd404/p/17320889.html

相关文章

  • python3正则-单匹配函数
    1、介绍re模块是python3用于处理正则的模块。这里介绍三个函数,re.match、re.fullmatch和re.search的使用。其都是如果匹配,则返回re.Match类对象,为初次匹配项。不匹配则返回None。且()不影响匹配结果,只是匹配过程中对需要匹配的描述。2、match函数match(pattern,string,fla......
  • Python 利用正则表达式和filter函数 筛选序列(列表等)
    在 Python 中,序列类型包括字符串、列表、元组、集合和字典http://c.biancheng.net/view/4312.htmlPython内建的filter()函数用于过滤序列https://www.liaoxuefeng.com/wiki/1016959663602400/1017404530360000序列内逐个元素筛选filter并用list保存结果筛选的判断条件是re.match......
  • python3多线程-线程池和优先队列
    1、介绍有两种线程池方案。各线程持续存在,从任务池获取任务进行执行按照需求创建线程,每个线程只执行一个任务,结束完毕则该线程结束2、准备(1)任务池task_list任务池是用于准备各任务单元的环境,比如http爆破时的请求参数,读写文件时的路径。任务池的准备可能会占用一定时间,边准......
  • bash shell 无法使用 perl 正则
      哈喽大家好,我是咸鱼。今天跟大家分享一个关于正则表达式的案例,希望能够对你有所帮助案例现象前几天有一个小伙伴在群里求助,说他这个shell脚本有问题,让大家帮忙看看   可以看到,这个脚本首先将目标文本文件的名字当作该脚本的第一个参数($1)传递进去,然后查看这个文本......
  • python3多线程-线程同步
    1、介绍多线程同时访问和操作同一资源,可能会造成异常。解决办法是对资源进行限制,同一时间只允许一个线程进行访问和操作。这里的资源,一般是指方法、函数或者代码块。即由多行代码组成,在逻辑上属于不可切分的操作。2、线程同步使用Thread对象的Lock和Rlock可以实现简单......
  • python3模块和相关
    1、模块为了方便管理类和函数,将其保存到不同的文件中,文件又可以存放在不同的目录下。这里的文件和目录,即python模块。(1)通过关键字import进行导入(2)一个模块只会被导入一次,不管你执行了多少次import。这样可以防止导入模块被一遍又一遍地执行。(3)搜索路径被存储在sys模块......
  • python3类的继承与相关
    参考:https://blog.csdn.net/zhouzhiwengang/article/details/1196776371、继承python支持类继承,在子类类名后的圆括号()中声明继承的父类,如果没有继承,则可以不加()。支持多继承,直接写入多个类名,用,分隔。如果没有指定基类,python的类会默认继承object类。object是所有python类......
  • python3类
    1、类python中使用关键字class声明类。在类中,可以有变量和方法。2、对象变量和类变量在类中、方法外声明的变量为类变量,基于该类创建的对象共享类变量。在类中、方法中声明的变量为对象变量,属于各对象私有。对象变量一般建议在初始化方法__init__中统一声明,当然,在其他方法中......
  • rust模式匹配(可驳模式匹配与不可驳模式匹配)
    rust的一个特性就是模式匹配(OOP编程语言好像都有?),模式匹配常常和变量绑定一起考虑常见的模式匹配有:match、iflet、whilelet、let、for、函数参数等等(for和let我个人认为说是模式匹配,其实有点牵强了,除非这样let(x,y)=(1,2)可驳与不可驳可驳模式匹配要求一定要穷尽所有......
  • python3控制结构
    1、介绍控制结构一般为:顺序结构,默认的从前到后执行顺序执行即是条件结构,if结构,python没有switch结构循环结构,while和for结构,以及迭代器,python不存在dowhile结构2、if结构if条件判断:passelif条件判断:passelse:pass3、while结构i=3whilei>0:......