返回顶部
首页 > 资讯 > 后端开发 > Python >python中正则表达式findall的用法实例
  • 538
分享到

python中正则表达式findall的用法实例

2024-04-02 19:04:59 538人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

正则口径:知道前后取中间,如果最后$结束 python中则这表达式的方法通常由re.match re.search re.findall re.findall匹配的时候,会

正则口径:知道前后取中间,如果最后$结束

python中则这表达式的方法通常由re.match re.search re.findall

re.findall匹配的时候,会把结果放到list返回,如果没有匹配到返回空list不会报错

import re
 
s1=re.compile('\d+')
# 匹配数字
r1=s1.findall('sahduasu27bhsagd7236vbcsahg923')
 
print(r1)
 
s2=re.compile('\d+')
r2=re.findall(s2, 'gashgddsh32hjsagd3jh4hjk234jkhk213')
print (r2)
 
 
r3=re.findall('\d+', 'sjdjsk1232kdsjf324string')
print(r3)
# 执行结果
# ['27', '7236', '923']
# ['32', '3', '4', '234', '213']
# ['1232', '324']

 示例及常用方式:

import re
 
a = "hfdsakjhabsdgfjhabhjgdjabhjgajbkdkjdhfkaab"
# 1.找出字符串中有多少个ab, 两个字符挨着
r1= re.findall(r"ab", a)
print(r1)
 
 
# 继续查找如ab, aab, aaab,aaaab这种,a可以重复,也就是匹配前面的a是1个或多个
# +是代表前面的字符出现1次或多次
 
r2= re.findall(r"a+b", a)
print(r2)
 
# *是代表匹配前面的字符出现0次或多次
 
r3= re.findall(r"a*b", a)
print(r3)
 
# 我们要匹配a和b之间有一个字符的,比如aab,abb,acb,adb都符合
 
# .就是匹配除 \n (换行符)以外的任意一个字符
 
r4= re.findall(r"a.b", a)
print(r4)
 
# 执行结果:
# ['ab', 'ab', 'ab', 'ab']
# ['ab', 'ab', 'ab', 'aab']
# ['ab', 'ab', 'ab', 'b', 'aab']
# ['ajb', 'aab']

 贪婪与非贪婪:

import re
 
# 符号.* 贪婪,匹配从.*前面为开始到后面为结束的所有内容
a = "hfdsakjhabsdgfjhabhjgdjabhjgajbkdkjdhfkaabsdf"
r1= re.findall(r"a.*b", a)
print(r1)
 
# 符号.*? 非贪婪,遇到开始和结束就进行截取,因此截取多次符合的结果,中间没有字符也会被截取
 
r2= re.findall(r"a.*?b", a)
print(r2)
 
# ['akjhabsdgfjhabhjgdjabhjgajbkdkjdhfkaab']
# ['akjhab', 'ab', 'ab', 'ajb', 'aab']
import re
 
# # 符号.* 贪婪,匹配从.*前面为开始到后面为结束的所有内容
a = "hfdsakjhabsdgfjhabhjgdjabhjgajbkdkjdhfkaabsdf"
r1= re.findall(r"hfdsak.*?jgdj", a)
print(r1)
 
r2= re.findall(r"hfdsak(.*?)jgdj", a)
print(r2)
# ['hfdsakjhabsdgfjhabhjgdj']
# ['jhabsdgfjhabh']
# 看到区别了么,就是取出来的数据是否带头尾

 re.S

前面匹配都是一整串没有换行的情况,如果我们需要匹配的内容,中间刚好有换行了,那就匹配不到了。

import re
 
a = '''hfdsakjhabsdgfjhabhjgdj
abhjgajbkdkjdhfkaabsdf'''
r1= re.findall(r"hfdsak.*?kjdh", a)
print(r1)
# []
r2= re.findall(r"hfdsak(.*?)jgdj", a,flags=re.S)
print(r2)
# ['jhabsdgfjhabh']

正则表达式可以包含一些可选标志修饰符来控制匹配的模式。修饰符被指定为一个可选的标志。

修饰符描述
re.I使匹配对大小写不敏感
re.L做本地化识别(locale-aware)匹配
re.M多行匹配,影响 ^ 和 $
re.S使 . 匹配包括换行在内的所有字符
re.U根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B.
re.X该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。

多个标志可以通过按位 OR(|) 它们来指定。如 re.I | re.M 被设置成 I 和 M 标志

补充:实战案例

如果上面的函数和参数含义都已经掌握了,还需要进一步通过案例加强理解,接下来举例说明上面的三个函数:

# 导入用于正则表达式的re模块
import re

# 取出字符串string8中所有的天气状态
string8 = "{ymd:'2018-01-01',tianqi:'晴',aqiInfo:'轻度污染'},{ymd:'2018-01-02',tianqi:'阴~小雨',aqiInfo:'优'},{ymd:'2018-01-03',tianqi:'小雨~中雨',aqiInfo:'优'},{ymd:'2018-01-04',tianqi:'中雨~小雨',aqiInfo:'优'}"
# 基于正则表达式使用findall函数
print(re.findall("tianqi:'(.*?)'", string8))

# 取出string9中所有含O字母的单词
string9  = 'Together, we discovered that a free market only thrives when there are rules to ensure competition and fair play, Our celebration of initiative and enterprise'
# 基于正则表达式使用findall函数
print(re.findall('w*ow*',string9, flags = re.I))

# 将string10中的标点符号、数字和字母删除
string10 = '据悉,这次发运的4台蒸汽冷凝罐属于国际热核聚变实验堆(ITER)项目的核二级压力设备,先后完成了压力试验、真空试验、氦气检漏试验、千斤顶试验、吊耳载荷试验、叠装试验等验收试验。'
# 基于正则表达式使用sub函数
print(re.sub('[,。、a-zA-Z0-9()]','',string10))

# 将string11中的每个子部分内容分割开
string11 = '2室2厅 | 101.62平 | 低区/7层 | 朝南 
 上海未来 - 浦东 - 金杨 - 2005年建'
# 基于正则表达式使用split函数
split = re.split('[-|
]', string11)
print(split)
# 分割结果的清洗
split_strip = [i.strip() for i in split]
print(split_strip)

out:
['晴', '阴~小雨', '小雨~中雨', '中雨~小雨']
['Together', 'discovered', 'only', 'to', 'competition', 'Our', 'celebration', 'of']
据悉这次发运的台蒸汽冷凝罐属于国际热核聚变实验堆项目的核二级压力设备先后完成了压力试验真空试验氦气检漏试验千斤顶试验吊耳载荷试验叠装试验等验收试验
['2室2厅 ', ' 101.62平 ', ' 低区/7层 ', ' 朝南 ', ' 上海未来 ', ' 浦东 ', ' 金杨 ', ' 2005年建']
['2室2厅', '101.62平', '低区/7层', '朝南', '上海未来', '浦东', '金杨', '2005年建']

如上结果所示:

第一个例子中通过正则表达式"tianqi:’(.*?)’“实现目标数据的获取,如果不使用括号的话,就会产生类似"tianqi:‘晴’”, "tianqi:‘阴~小雨’"这样的值,所以,加上括号就是为了分组,且仅返回组中的内容;

第二个例子并没有将正则表达式写入圆括号,如果写上圆括号也是返回一样的结果,所以findall就是用来返回满足匹配条件的列表值,如果有括号,就仅返回括号内的匹配值;

第三个例子使用替换的方法,将所有的标点符号换为空字符,进而实现删除的效果;

第四个例子是对字符串的分割,如果直接按照正则 ‘[,。、a-zA-Z0-9()]’ 分割的话,返回的结果中包含空字符,如 ‘2室2厅’ 后面就有一个空字符。为了删除列表中每个元素的首尾空字符,使用了列表表达式,并且结合字符串的strip方法完成空字符的压缩。

总结

到此这篇关于Python中正则表达式findall用法的文章就介绍到这了,更多相关python正则表达式findall用法内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: python中正则表达式findall的用法实例

本文链接: https://lsjlt.com/news/120272.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • python中正则表达式findall的用法实例
    正则口径:知道前后取中间,如果最后$结束 python中则这表达式的方法通常由re.match re.search re.findall re.findall匹配的时候,会...
    99+
    2024-04-02
  • Python中正则表达式的用法
    在这里跟大家分享一个Python编程过程中的小知识点——正则表达式! 那正则表达式到底是什么呢?又是用来干什么的呢? 正则表达式 是包含文本和特殊字符的字符串, 为高级的文本模式匹配, 抽取, 与文本形式的搜索和替换功能提供了基础...
    99+
    2023-01-31
    正则表达式 Python
  • java正则表达式的实例用法
    本篇内容介绍了“java正则表达式的实例用法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Java正则表达式实例详解 创建正则表达...
    99+
    2023-06-03
  • Java中Pattern用法实例(正则表达式)
    目录1. 正则表达式的应用2. 常用正则表达式3 贪婪匹配与懒惰匹配补充:其它的一些用法总结1. 正则表达式的应用 在给用户发送消息时通常情况会有相同的消息模板,但其中部分信息跟用户...
    99+
    2024-04-02
  • python正则表达式的用法
    本篇内容介绍了“python正则表达式的用法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!简单模式 我们...
    99+
    2024-04-02
  • Python正则表达式实例分析
    这篇“Python正则表达式实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python正则表达式实例分析”文章吧。一...
    99+
    2023-06-29
  • Python中的正则表达式
    正则表达式 是包含文本和特殊字符的字符串, 为高级的文本模式匹配, 抽取, 与文本形式的搜索和替换功能提供了基础 Python通过标准库re模块来支持正则表达式 模式匹配的两种方法完成匹配(模式匹配) 搜索(search())...
    99+
    2023-01-31
    正则表达式 Python
  • Python正则表达式使用经典实例
    下面列出Python正则表达式的几种匹配用法,具体内容如下所示: 此外,关于正则的一切http://deerchao.net/tutorials/regex/regex.htm 1.测试正则表达式是否匹...
    99+
    2022-06-04
    实例 经典 正则表达式
  • Python正则表达式使用实例分析
    这篇文章主要介绍“Python正则表达式使用实例分析”,在日常操作中,相信很多人在Python正则表达式使用实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python正则表达式使用实例分析”的疑惑有所...
    99+
    2023-06-08
  • python正则表达式re.group()用法
    目录re.group()用法re.group()用法 在正则表达式中,re.group()方法是用来提取出分组截获的字符串,匹配模式里的括号用于分组。 举例说明: #!/usr/bi...
    99+
    2024-04-02
  • SQL正则表达式及mybatis中使用正则表达式的方法
    小编给大家分享一下SQL正则表达式及mybatis中使用正则表达式的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!mysql...
    99+
    2024-04-02
  • Python正则表达式匹配中文用法示例
    本文实例讲述了Python正则表达式匹配中文用法。分享给大家供大家参考,具体如下: #!/usr/bin/python #-*- coding:cp936-*-#思路,将str转换成unicode,方可...
    99+
    2022-06-04
    示例 中文 正则表达式
  • 轻松掌握正则表达式findall函数详解
    正则表达式入门-findall()函数 findall()函数 例子 import re a = '123abc' re=re.findall('\d\d\d',a) print...
    99+
    2024-04-02
  • 在python正则表达式中是怎样正确使用正则表达式
    这篇文章将为大家详细讲解有关在python正则表达式中是怎样正确使用正则表达式,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。现在我们已经看了一些简单的正则表达式,那么我们实际在 Python...
    99+
    2023-06-17
  • Python案例|Pandas正则表达式
    字符串的处理在数据清洗中占比很大。也就是说,很多不规则的数据处理都是在对字符串进行处理。Excel提供了拆分、提取、查找和替换等对字符串处理的技术。在Pandas中同样提供了这些功能,并且在Pandas中还有正则表达式技术的加持,让其字符...
    99+
    2023-09-02
    python 开发语言 正则表达式 数据清洗 Pandas 原力计划
  • python 中正则表达式的使用
    正则表达式(re)(Regular Expression)。正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。在pyth...
    99+
    2023-01-31
    正则表达式 python
  • Python中使用正则表达式及正则表达式匹配规则详解
    目录1 导库2 使用模板3 说明4 示例5 正则表达式匹配规则1 导库 import re 2 使用模板 re_pattern = re.compile(pattern, flags...
    99+
    2023-03-22
    Python正则表达式匹配规则 Python正则表达式
  • Python之正则表达式常用语法实例分析
    正则表达式概述正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。 Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式。 re 模块使 Python 语言拥有全部的正则表达式功...
    99+
    2023-05-14
    Python
  • Python正则表达re模块之findall()函数详解
    一、re.findall函数介绍 它在re.py中有定义: def findall(pattern, string, flags=0): """Return a list o...
    99+
    2024-04-02
  • python 正则表达式
    正则表达式的作用:用来匹配字符串 一、字符串方法 字符串提供的方法是完全匹配,不能进行模糊匹配 s = 'hello world' # 字符串提供的方法是完全匹配,不能进行模糊匹配 print(s.find('ll')) # 2 ...
    99+
    2023-01-30
    正则表达式 python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作