【Python库】05—RE正则表达式

在Centos上从零开始部署并运行TinyWebServer服务器,过程记录(非常详细) TinyWebServer是个什么项目?它是Linux下C++轻量级Web服务器,助力初学者快速实践网络编程,搭建属于自己的服务器。使用线程池+非阻塞socket+epoll(ET和LT均实现) +事件处理(Reactor和模拟Proactor均实现) 的并发模型使用状态机解析HTTP请求报文,支持解析GET和POST请求访问服务器数据库实现web端用户注册、登录功能,可以请求服务器图片和视频文件实现同步/异步日志系统,记录服务器运行状态。...... 阅读详情

有些人面临一个问题时会想:“我知道,可以用正则表达式来解决这个问题。”于是,现在他们就有两个问题了。

                                                                                                                                                                        Jamie Zawinski

使用Python正则表达式,可以帮助我们批量处理一些文件内容,大幅提高效率,减小重复性工作。

RE模块中常用的函数:

1.re.compile(pattem,flags=0)

Compile a regular expression pattern into a regular expression object, which can be used for matching using its match(), search() and other methods, described below.

编译正则表达式,使其转化为一个正则表达式对象,以便其他方法,如:match()、search()等的使用。那么,为什么要这样做呢?

因为当我们在Python中使用正则表达式时,RE模块内部会做两件事:

(1)编译正则表达式,如果正则表达式不合法,则报错;

(2)用编译后的正则表达去匹配字符串。

所以,当我们要多次使用同一个正则表达式时,为了实现更有效率的匹配,先将正则表达式编译为正则表达式对象,这样在下一次使用时,就不用再转化一次。

函数详解:

  • pattem:正则表达式
  • flags:用于修改正则表达式的匹配方式,常用的有:

标志

含义

re.S(DOTALL)

匹配包括换行在内的所有字符

re.I(IGNORECASE)

匹配时大小写不敏感

re.L(LOCALE)

做本地化识别匹配???

re.M(MULTILINE)

多行匹配

re.X(VERBOSE)

给与更灵活的方式

re.U

根据Unicode字符集解析,会影响到\w,\W,\b,\B

代码示例:

import re
tt = "Tina is a good girl, she is cool, clever, and so on..."
rr = re.compile(r'\w*oo\w*',re.I)

 

2.re.search(pattern,string,flags=0)

Scan through string looking for the first location where the regular expression pattern produces a match, and return a corresponding match object. Return None if no position in the string matches the pattern; note that this is different from finding a zero-length match at some point in the string.

查找给定字符串中第一个匹配项,并换回。如果没有字符串匹配,则返回NONE。

匹配成功后,将返回一个match object,并有以下方法:

方法

作用

group()

返回匹配的字符串

start()

返回匹配开始的位置

end()

返回匹配结束的位置

span()

返回一个元组,包括匹配的开始和结束的位置

group( n )

返回对应子表达式的内容

groups( )

返回一个列表,包括全部的子表达式

代码示例:

import re
text = "Tina is a good girl, she is cool, clever, and so on..."
S1 = re.search('[A-Z]?[a-z]*',text).group()
S2 = re.search('[A-Z]?[a-z]*',text).start()
S3 = re.search('[A-Z]?[a-z]*',text).end()
S4 = re.search('[A-Z]?[a-z]*',text).span()
print(S1)
print(S2)
print(S3)
print(S4)

结果如下:

group()的用法详解:

可按子表达式进行返回对应的匹配字符串。“0”为返回全部,与不填是一样的。

示例代码:

import re
text = "123abc456"
S1 = re.search("([0-9]*)([a-z]*)([0-9]*)",text).group()
S2 = re.search("([0-9]*)([a-z]*)([0-9]*)",text).group(0)
S3 = re.search("([0-9]*)([a-z]*)([0-9]*)",text).group(1)
S4 = re.search("([0-9]*)([a-z]*)([0-9]*)",text).group(2)
S5 = re.search("([0-9]*)([a-z]*)([0-9]*)",text).group(1,3)
S6 = re.search("([0-9]*)([a-z]*)([0-9]*)",text).groups()
print(S1)
print(S2)
print(S3)
print(S4)
print(S5)
print(S6)

结果为

3.re.match(pattern, string, flags=0)

If zero or more characters at the beginning of string match the regular expression pattern, return a corresponding match object. Return None if the string does not match the pattern; note that this is different from a zero-length match.

Note that even in MULTILINE mode, re.match() will only match at the beginning of the string and not at the beginning of each line.

If you want to locate a match anywhere in string, use search() instead (see also search() vs. match()).

re.match()在字符串的开头匹配正则表达式,并返回匹配项,否则返回NONE。

示例代码:

import re
text = "123abc456"
S1 = re.match("([0-9]*)",text)
S2 = re.match("([a-z]*)",text)
S3 = re.match("([0-9]*)",text).group()
S4 = re.match("([a-z]*)",text).group()
print(S1)
print(S2)
print(S3)
print(S4)

返回结果:

此处,可以更好的理解match object的概念。

​​​​​​​4.re.findall(pattern, string, flags=0)

Return all non-overlapping matches of pattern in string, as a list of strings. The string is scanned left-to-right, and matches are returned in the order found. If one or more groups are present in the pattern, return a list of groups; this will be a list of tuples if the pattern has more than one group. Empty matches are included in the result.

以列表的形式,返回所有的匹配项。

示例代码:

import re
p = re.compile(r'\d+')
S1 =p.findall('o1n2m3k4')
print(S1)

返回结果为

​​​​​​​5.re.finditer(pattern, string, flags=0)

Return an iterator yielding match objects over all non-overlapping matches for the RE pattern in string. The string is scanned left-to-right, and matches are returned in the order found. Empty matches are included in the result.

返回一个顺序访问每一个匹配结果的迭代器。

示例代码:

import re
S1 = re.finditer(r'\d+','12 drumm44ers drumming, 11 ... 10 ...')
for i in S1:
    print(i.group())

返回结果:

​​​​​​​6.re.split(pattern, string, maxsplit=0, flags=0)

Split string by the occurrences of pattern. If capturing parentheses are used in pattern, then the text of all groups in the pattern are also returned as part of the resulting list. If maxsplit is nonzero, at most maxsplit splits occur, and the remainder of the string is returned as the final element of the list.

根据匹配项来分割字符串。

示例代码:

import re
S1 = re.split(r',', 'Words, SKY, Space.')
print(S1)

返回结果为

​​​​​​​7.re.sub(pattern, repl, string, count=0, flags=0)

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

示例代码:

import re
text = "JGood is a handsome boy, he is cool, clever, and so on..."
print(re.sub(r'\s+', '-', text))

返回结果:

repl还可以是一个函数,允许其对匹配项做处理后再进行替换。

If repl is a function, it is called for every non-overlapping occurrence of pattern. The function takes a single match object argument, and returns the replacement string.

示例代码:

import re
def repl_handle(matchobj):
    repl2 = str(int(matchobj.group()) + 1)
    return repl2

text = "one1two2three3four4five5six"
S1 = re.sub(r'\d+',repl_handle,text)
print(S1)

返回结果为:

​​​​​​​8.re.subn(pattern, repl, string, count=0, flags=0)

Perform the same operation as sub(), but return a tuple (new_string, number_of_subs_made).

执行和sub()一样的操作,但同时返回替换的次数。

示例代码:

import re
text = "JGood is a handsome boy, he is cool, clever, and so on..."
S1 = re.sub(r'\s+', '-', text)
S2 = re.subn(r'\s+', '-', text)
print(S1)
print(S2)

返回结果:

​​​​​​​9.re.escape(pattern)

将字符串中所有的特殊正则表达式字符转义。

示例代码:

import re
S1 = re.escape('www.python.org')
print(S1)

返回结果:

 

 

注:

在字符串前面加上“r”前缀,就不用考虑转义了。

 

 

 

 

Ref:

1.MagnusLieHetland. Python基础教程.第2版[M]. 人民邮电出版社, 2014.

2.Python官网说明:https://docs.python.org/3.7/library/re.html

3.廖雪峰Python教程:https://www.liaoxuefeng.com/wiki/

4.Python(RE模块):https://www.cnblogs.com/tina-python/p/5508402.html

 

ICM20948 DMP代码详解(69) 阅读详情

相关推荐

2023东华大学OJ机试题22-70

东华大学计算机考研复试机试22 约瑟夫环223、整除的尾数24、回文质数25、汽水瓶26、阶乘最后的非0位27、算菜价28、 水果价格29、求奇数的乘积30、求最晚和最早日期31、素数32、计算e33 数字之和34 繁殖问题35 奇妙的数字36 整除的尾数37 黑色星期五38 树39 约瑟夫环40 最大与最小41 环42 求数列项43 最高频率44 三艘船45 回文数46 特殊四位数47 最大值48 数列149 修理牛棚50 按要求输出序列51 部落人乘法52 序列53 双重回文数54 等差数列55 人见人

m0_49263811的博客 2599

re.search()用法详解

re.search():匹配整个字符串,并返回第一个成功的匹配。如果匹配失败,则返回None pattern: 匹配的规则, string : 要匹配的内容, flags 标志位 这个是可选的,就是可以不写,可以写, 比如要忽略字符的大小写就可以使用标志位 flags: 可选,表示匹配模式,比如忽略大小写,多行模式等,具体参数为: re.I忽略大小写 re.L表示特殊字符集 \w, \W, \b, \B, \s, \S 依赖于当前环境 re.M多行模式 re.S即为.并...

IT之一小佬的博客 4万+

基于ENVI5.3的Landsat条带去除、辐射定标、大气校正

基于ENVI5.3的Landsat条带去除、辐射定标、大气校正坏带修复辐射定标大气校正 坏带修复 1.下载landsat_gapfill插件,放入“安装目录\Exelis\ENVI53\extensions”,重启ENVI 2. 加载拟处理文件(MTL.txt格式) 3.打开landsat_gapfill 4.选择存放位置并命名文件 5.选择处理文件 辐射定标 1.选择工具Radiometric Calibration 2.选择已修复坏带文件 3.修改参数,选择输出位置及命名文件 大气校正 1

u010198950的博客 1万+

re.search()使用方法详解与实战应用

介绍:search()方法用于在整个字符串中搜索第一个匹配的值,如果匹配成功,则返回一个Match对象,否则返回None. 语法:re.search(pattern,string,[flags])

weixin_39274808的博客 3万+

YOLOv13+SAHI实战:5步搞定无人机航拍小目标检测(附VisDrone数据集调参技巧)

本文详细介绍了如何结合YOLOv13与SAHI(切片辅助超推理)技术,在VisDrone2019数据集上实现高效的无人机航拍小目标检测。通过5个实战步骤,包括环境配置、SAHI参数解析、数据集调优、完整训练推理流程和性能优化技巧,帮助开发者显著提升小目标检测的准确率和效率。

egg99的博客 430

手把手教你用PLECS仿真BUCK数字电源(含DSP代码实现)

本文详细介绍了如何利用PLECS仿真软件与Visual Studio 2022搭建高保真数字电源开发环境,手把手指导从BUCK电路建模、编写硬件感知的C控制算法到参数调优的全过程。重点阐述了通过DLL接口实现软件在环仿真,模拟DSP的ADC/PWM时序,并将验证后的代码无缝迁移至TI C2000系列DSP,构建从仿真到固件的完整数字电源开发闭环,显著提升开发效率与一次成功率。

oo7890的博客 396

正则表达式 re库的使用

search() 函数会扫描整个字符串,并且用 group() 函数 返回第一个满足正则表达式的字符串,匹配失败返回 None...

m0_56208280的博客 3181

如何入门强化学习

很多同学在入门强化学习的时候都会遇到困难,那我这里就简单介绍一下应该如何入门强化学习,并以开源代码为例详解强化学习实战。

seeksister的博客 3304

正则表达式

正则表达式到底是什么东西? 在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本规则的代码。 很可能你使用过Windows/Dos下用于文件查找的通配符(wildcard),也就是*和?。如果你想查找某个目录下的所有的Word文档的话,你会搜索*.doc。在这里,*会被解释成任意的字符串。和...

weixin_30340819的博客 336

一张图讲透银行个人外汇业务逻辑和实操

个人外汇业务主要分为结售汇和外币兑换两类,前者满足日常跨境需求,后者因投机属性多数银行已暂停。业务核心是利用汇率波动实现货币兑换,满足支付或投资需求。交易涉及客户分类、主流币种、多种渠道和汇率计算规则,需区分直接/间接标价法判断汇率走势。银行通过"货币兑换"科目核算损益,采用期末折算确认盈亏。监管要求包括5万美元年度额度、合法渠道、真实性原则及大额申报等。随着跨境金融数字化发展,掌握基础逻辑和合规要求是安全参与外汇业务的关键。

银行信息系统应用架构详解 289

矩阵理论与应用:数理经济学中的投入产出模型分析

1. 背景介绍 矩阵理论是现代数学中的一个重要分支,它在各个领域都有广泛的应用。其中,投入-产出模型是矩阵理论在经济学中的一种应用,它可以用来分析一个国家或地区的经济结构和发展趋势。本文将介绍投入-产出模型的基本概念和原理,并通过实例来说明其应用。 2. 核心概念与联系 投入-产出模型是一

AI天才研究院 1487

Python正则表达式实战:从脏数据中提取关键信息的文本清洗指南

在数据处理与数据分析领域,脏数据清洗是确保数据质量的关键预处理步骤。其核心原理在于通过模式识别与字符串操作,将原始、非结构化的文本转化为可供分析的结构化格式。这项技术的价值在于能够显著提升下游任务(如机器学习建模、业务分析)的准确性与效率。典型的应用场景包括用户评论分析、日志文件解析以及非标准API响应的处理。本文以Python的re模块和pandas库为基础,通过一个包含表情符号和无关标点的实战案例,详细演示了如何使用正则表达式进行深度文本清洗,并从中提取如“金仓鼠50=软米0.05”这类关键数值关系,最

weixin_34342207的博客 368

[Python图像处理] 一.图像处理基础知识及OpenCV入门函数

该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门、OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子、图像增强技术、图像分割等,后期结合深度学习研究图像识别、图像分类应用。希望文章对您有所帮助,如果有不足之处,还请海涵~ 同时推荐作者的C++图像系列知识: [数字图像处理] 一.MFC详解显示BMP格式图片 [数字图像处理] 二.MFC单文档分割窗...

杨秀璋的专栏 7万+

python第三方库re库基本介绍

实际上爬虫一共就四个主要步骤: 明确目标 (要知道你准备在哪个范围或者网站去搜索) 爬 (将所有的网站的内容全部爬下来) 取 (去掉对我们没用处的数据) 处理数据(按照我们想要的方式存储和使用) 我们在昨天的案例里实际上省略了第3步,也就是"取"的步骤。因为我们down下了的数据是全部的网页,这些数据很庞大并且很混乱,大部分的东西使我们不关心的,因此我们需要将之按我们的需要过滤和匹配出来。 那...

Laic Zhang的博客 1万+

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

python-re库的详细介绍

re是 Python 标准库中用于操作的模块,提供字符串的复杂模式匹配、搜索、替换等功能。正则表达式(Regex)通过特定语法规则描述字符串模式,适用于文本解析、数据清洗、输入验证等场景。

wanglaqqqq的博客 2639

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Python网络爬虫与信息提取笔记07-Re(正则表达式)库入门

Python网络爬虫与信息提取笔记01-Requests库入门 Python网络爬虫与信息提取笔记02-网络爬虫之“盗亦有道” Python网络爬虫与信息提取笔记03-Requests库网络爬虫实战(5个实例) Python网络爬虫与信息提取笔记04-Beautiful Soup库入门 Python网络爬虫与信息提取笔记05-信息组织与提取方法 Python网络爬虫与信息提取笔记06-实...

MARS_098的博客 733

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Python100个库分享第29个—re正则模块

Python100个库分享第29个—re正则模块

weixin_42636075的博客 2016

05. re模块

re模块、面向对象编程一、re模块1.4 re模块的方法二、面向对象编程 一、re模块 1.1 正则表达式 由一系列特殊字符拼接而成的表达式/规则,用于从一个大字符串中匹配出符合一定规则的子字符串 1.2 常用匹配模式 1.3 re模块具体使用 import re # \w 匹配字母数字下划线(汉字) print(re.findall('\w', 'hello_你好 -123!')) # ['h', 'e', 'l', 'l', 'o', '_', '你', '好', '1', '2', '3']

梅开二度,异常绚烂 4122

python之一文秒懂re正则表达式

Python 中的正则表达式是一个强大的工具,用于处理字符串查找、替换、分割等。正则表达式使用特殊语法来表示一系列匹配字符串的字符规则。Python 通过re模块提供对正则表达式的支持。

做一位与众不同的吗喽 1862

python正则表达式re模块

Python的re模块提供了强大的正则表达式功能,是文本处理的利器。高效处理文本:快速完成复杂的文本匹配和替换数据验证:验证用户输入的格式数据提取:从非结构化文本中提取结构化信息文本清洗:预处理文本数据用于分析。

a181001_的博客 887

Python re正则表达式常用函数

Python re正则表达式常用函数re.match()示例一示例二re.search()示例一示例二re.findall()示例一示例二 re.match() 调用方法: re.match(pattern, string, flags=0) 用法说明: 该函数在字符串的起始位置处进行匹配,若匹配到则返回该值,若没有匹配到,则返回None。可以匹配到,但是不在字符串的起始位置,仍旧会返回None。代码如下: 示例一 str1 = "I want to be a scientist" pattern = "

u011699626的博客 1611

python爬虫--05 正则表达式

1 介绍 用来简洁表达一组字符串的表达式 编译:将符合正则表达式语法的字符串转换成正则表达式特征 2 语法 操作符 说明 实例 . 表示任何单个字符(\n除外) a.c->abc [] 字符集,对单个字符给出取值范围 [a‐z]表示a到z单个字符 [...

qq_25672165的博客 200

python爬虫基础知识—05正则表达式

python爬虫慕课整理https://www.cnblogs.com/beiyin/p/9129443.html 正则表达式 regular expression regex RE 正则表达式是用来简洁表达一组字符串的表达式 'PN' 'PYN' 'PYTHN' 'PYTHON' 正则表达式 P(Y|YT|YTH|YTHO)?N 优势:简洁,一行胜千言 示例: (1)'PY' 'PYY' ...

张小北的博客 412

python re模块导入_Python re模块介绍

python基础学习笔记(十三)re模块包含对正则表达式。本章会对re模块主要特征和正则表达式进行介绍。什么是正则表达式正则表达式是可以匹配文本片段的模式。最简单的正则表达式就是普通字符串,可以匹配其自身。换包话说,正则表达式’python’可以匹配字符串’python’。你可以用这种匹配行为搜索文本中的模式,并且...文章虫师20162016-04-281284浏览量自动化测试中Pytho...

weixin_39821874的博客 1222

Python正则表达式(re模块)详解

正则表达式是一种文本模式,包括普通字符(例如,字母a到z)和特殊字符(称为"元字符")。a:匹配字母"a"。a+:匹配一个或多个"a"。ab*:匹配"ab"后跟零个或多个"b"。正则表达式是文本处理的强大工具,Python的re模块提供了丰富的功能来支持正则表达式的操作。通过本文的介绍,你应该能够掌握re模块的基本用法和一些高级技巧,从而在实际开发中更加高效地处理字符串。版权声明:本博客内容为原创,转载请保留原文链接及作者信息。参考文章Python——正则表达式(re模块)详解。

ning的博客 1295

正则表达式re模块用法总结

什么是正则表达式 正则表达式,又称规则表达式,通常被用来检索、替换那些符合某个模式(规则)的文本。 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个"规则字符串",这个"规则字符串"用来表达对字符串的一种过滤逻辑。 给定一个正则表达式和另一个字符串,我们可以达到如下的目的: 给定的字符串是否符合正则表达式的过滤逻辑("匹配"); ...

安藤青司的博客 1840
上一篇: 【Python库】04—glob文件查找
下一篇: 【小代码】01-去除verilog工程的make_debug的python脚本
X-ONE
博客等级 码龄12年 199粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值