【python正则表达式】

Python正则表达式详解 1. 正则表达式简介on简单翻译为”有规则的表达式“,即该表达式是一条规则,正则表达式引擎能够根据这条规则,在字符串中寻找所有符合规则的部分-》正则表达式是一个特殊的字符序列,方便检查一个字符串是否与某种模式匹配-》Python 自1.5版本起增加了re 模块(标准库),Python通过re模块提供对正则表达式的支持。 阅读详情

1、什么是python正则表达式

正则表达式是进行文本匹配的一种方式,通过正则来匹配到自己需要的内容。和我们用搜索浏览器一样,搜索abc,搜索出来的内容就是包括abc相关的。
正则是在一个目标字符串中,搜索到你需要的关键字

  • 目标字符串: Youth is not a time of life; it is a state of mind
  • 正则表达式: mind

下面这个网站就是可以使用正则来匹配搜索。
https://tool.oschina.net/regex/
在这里插入图片描述

2、常用的python正则表达式

.	匹配除换行符以外的任意字符                                   
\b	匹配字符串中的单词的开始或结束                                   
^	匹配字符串的开始                                   
$	匹配字符串的结束                                   
\w	匹配字母或数字                                   
\s	匹配任意的空白符                                   
\d	匹配数字                                   


2.1详细介绍如下

  • 1、 比如 \bm…e\b
    在这里插入图片描述

  • 2、 \w 匹配字母或数字
    \b\w\w\w\w\b 代表什么 ?

    \w 匹配字母或数字 ,所以上面的是开头到结尾,一共4个。都是数字和字母。

  • 3、 \s 匹配任意的空白符
    空白符包括空格,制表符(tab),换行符这三个很特殊的字符 , 通过and\smade 可以匹配到and made

在这里插入图片描述

  • 4、 ^ 和 $ 匹配字符串开始和结束
    在这里插入图片描述

只想验证字符串是不是以ma开头,那么可以通过^ma 来验证

值得注意的是,如果是[^a] 这种形式, ^表示否,[^a] 表示匹配不是a的任意一个字符

3、常用的python正则表达式 ----数量相关

3.1 \b\w*a\w*\b 的匹配

*	重复0次或更多次 
+	重复1次或更多次 
?	重复0次或1次 
{n}	重复n次 
{n,}	重复n次或更多次 
{n,m}	重复n到m次 

\b\wa\w\b w*表示 0个或多个字母或数字。 所以整个的意思就是, 找个单词,中间是a就行了。

3.2 \d+ 的匹配

+ 表示重复1次或更多次

\d+ \d 表示数字,+ 表示重复1次或多次
在这里插入图片描述

3.3 (\+86)?\d{11} 的匹配

(\+86)?\d{11}  是匹配我们的手机号码的 
  • 理解这个需要知道下面三个点
    • 1、转义字符

      • 比如 + 表示重复1次或更多次,如果想要匹配的字符里本身就有+ 该怎么办呢?
      • 使用 \ 转义 + , 这个时候+ 就是+,没有别的意思。
    • 2、分组

      • 前面说重复,都是重复某一个字符,但是如果想要让一个字符串重复呢,就如本题中的+86,它作为一个整体重复0次或1次,就需要用小括号把+86括起来,(+86) 就变成了一个分组,也叫子表达式,在使用正则表达式匹配时,这些分组的部分如果被匹配上,可以获得字符串中匹配的字符串。
    • 3、重复指定次数

      • *重复0次或更多次
      • +重复1次或更多次
      • ?重复0次或1次

即这个正则表达式 (\+86)?\d{11} 可以被拆分为几个部分来解析其意义:

  • 1、 (\+86)? :
    +:匹配一个加号字符(在正则表达式中,+ 是一个特殊字符,表示前面的字符或组的一个或多个重复,所以要在前面加上 \ 进行转义以匹配实际的加号字符)。

    86:匹配数字“86”。
    ?:表示前面的部分(即 +86)是可选的,可以出现一次或不出现。

  • 2、 \d{11}:
    \d:匹配任何数字字符,相当于 [0-9]。
    {11}:表示前面的 \d 必须恰好重复11次。

所以,整个正则表达式 (+86)?\d{11} 的意义是:
匹配一个由11位数字组成的字符串,该字符串前面可能(也可能不)有一个加号和一个“86”。

4. 重复指定次数

  • {n} 表示重复n次
  • {n,} 表示n次或更多次,换一个说法就是至少重复n次
  • {n, m} 表示重复n到m次,换一个说法就是至少重复n次,最多重复m次

5.重复的量词的含义

将这些量词分为两部分,一部分是有{}的,一部分是没有{},先说有{}符号的

  • 规定重复次数的 {n}
  • 规定重复次数下限的 {n, }
  • 规定重复次数下限和上限的 {n, m}

再来看 * + ?

* 表示0次或多次,和Linux中类似。        
+ 是在* 的基础上加1,就变成了1次或多次
? 表示不清楚,所以是0次或者1次。

6. 正则表达式转义,替换

1. 字符转义

  • 如果正则表达式想要匹配的字符恰好是特殊代码,或者重复量词等其他正则表达式里用于描述规则的字符,那么就需要使用字符转义。

  • 比如你想匹配+ 或者 ?,那么你要在正则表达式里写成 \+ 和 \? 这样,他们就代表字符加号和问号,而不是重复几次,如果想匹配\, 则写成\\。

2. 替换

  • | 匹配左右任意一个表达式,可以表示或的意思。

\bthis\b|\bbook\b 表示 匹配得上this,或者匹配得上book

3. 使用[] 指定一个字符范围

  • 特殊代码. \w \s \d 所指定的字符,范围太大了,不够灵活,比如我只想匹配0到5 这个范围内的数字,使用\d就不行了,虽然可以写成 0|1|2|3|4|5 ,但使用起来不够方便,对于这种情况,就可以使用中括号
  • [0-5] 表示从0到5的字符
  • [a-z] 表示从a到z的字符
  • [a-zA-Z0-5] 多个范围
  • [+?] 表示+ 或者 ? 在中括号里,特殊字符可以不使用字符转义

7. python中怎么使用正则

  • 1、re模块的使用------match
    功能: match方法的作用是从字符串起始位置开始匹配一个模式,如果模式不匹配,则返回None
import re

res = re.match('www', 'www.coolpython.net')
if not res is None:
    print(res.span())  # 输出匹配的起始位置和结束位置
    print(res)

在这里插入图片描述

  • 2、re模块的使用------search

search
功能:按照需求,在整个字符串中查找,而不一定是从开头

需求:匹配出文章阅读的次数

import re

ret = re.search("\d+", "阅读次数为 9999")
if ret:
    print(ret.group())  # 如果找到了匹配项,则打印它  
else:
    print("没有找到数字序列")   

 #运行结果: 9999  

7. 正则表达式实践

7.1匹配URL [a-zA-z]+://[^\s]*
  • 1、[a-zA-z]+

    • [a-zA-z]+ 这部分匹配一个或多个(由于 +)小写或大写英文字母。这通常用于匹配URL的协议部分,如 http, https, ftp 等。
  • 2、 :// 这部分直接匹配URL中的 :// 字符串

  • 3、 [^\s]

    • [^\s] 这个字符类匹配任何不是空白字符(\s 代表空白字符,如空格、制表符、换行符等)的字符。^ 在这里是一个否定符号。

    • * 这个量词表示前面的字符类([^\s])可以出现零次或多次。

7.2 匹配.com的邮箱
  • ^[a-zA-Z0-9_-]+@[a-z0-9]+.com$

  • 先考虑规则,邮箱分为两部分,A@B,A部分是邮箱用户名部分,可以由大小写字母,数字,下划线,中划线构成。

  • B是域名部分,域名通常都是xxx.xxx的形式,那么根据实际工作中的需要,可以继续细化,域名的前半部分只能由小写字母和数字构成,后半部分只能是com,根据这些规则写出正则表达式

解释如下:

  • 1、 ^: 这是正则表达式的开始锚点,它确保整个字符串的开始与接下来的模式匹配。

  • 2、[a-zA-Z0-9_-]+:

    • [a-zA-Z0-9_-]: 这是一个字符集,它匹配任何小写字母、大写字母、数字、下划线(_)或连字符(-)。

    • +: 表示前面的字符集(即 [a-zA-Z0-9_-])必须出现一次或多次。因此,这部分匹配电子邮件地址的用户名- 部分(在 @ 之前的部分)。

  • 3、@: 匹配文字字符 @。

  • 4、[a-z0-9]+:

    • [a-z0-9]: 这是一个字符集,它匹配任何小写字母或数字。
    • +: 表示前面的字符集(即 [a-z0-9])必须出现一次或多次。这部分匹配电子邮件地址的域名部分(在 @ 之后的部分),但请注意,它只接受小写字母和数字,并且没有点(.)来分隔子域名。
  • 5、 .com: 匹配文字字符 .com。这部分是电子邮件地址的顶级域名(TLD),如果是别的,就可以换成别的

  • 6、$: 这是正则表达式的结束锚点,它确保整个字符串的结束与前面的模式匹配。

8. python 正则中r的作用

  • 在Python中,字符串中的反斜杠(\)是一个特殊字符,它用于表示转义序列,如\n(换行)、\t(制表符)等。但是,在正则表达式中,我们经常需要使用到反斜杠,比如\d(匹配任何数字)、\s(匹配任何空白字符)等 ,如果没有r前缀,我们需要为每个反斜杠写两个反斜杠(\)来避免Python解释器将其视为转义字符。但这样做会使正则表达式变得难以阅读和编写。

  • 使用r前缀,就可以直接写出你想要的正则表达式,而无需担心Python解释器会将其中的反斜杠视为转义字符。

  • 8.1 不使用 r 前缀

import re  
pattern = '\\d+'  # 匹配一个或多个数字  
match = re.search(pattern, 'abc123def')  
if match:  
    print(match.group())  # 输出: 123
  • 8.2 如果使用r前缀的话
import re  
pattern = r'\d+'  # 匹配一个或多个数字  
match = re.search(pattern, 'abc123def')  
if match:  
    print(match.group())  # 输出: 123

由于使用了r前缀,我们可以直接写出\d+而无需担心Python解释器会误解它。这使得正则表达式更加清晰和易于编写。

【Python】正则表达式(非常详细) 正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(视则)的文本。(1)测试字符串的某个模式,即数据有效性验证(查找)(2)实现按照某种规则替换文本(3)根据模式匹配从字符串中提取一个子字符串(爬虫)原子(普通字符,如英文字符)、元字符(有特殊功能的字符)、以及模式修正字符组成。注意:一个正则表达式中至少包含一个原子。RegexBuddy。 阅读详情

相关推荐

【Python】正则表达式

从本质上讲,正则表达式就是一种“模式语言”或者“模式描述符”。它使用一套预定义的特殊字符和语法规则,来表示或“匹配”文本中特定的字符组合模式。当我们需要在大量文本中寻找、替换、提取符合特定规律的数据时,手动编写复杂的字符串处理逻辑会变得异常繁琐且容易出错。正则表达式以其高度抽象和表达力,极大地简化了这类任务。它的强大之处在于:举个最简单的例子,如果您想找到文本中所有的电子邮件地址,传统方法可能需要循环遍历字符串,判断字符是否包含和,然后进一步验证其前后的字符是否符合邮箱格式,这会非常复杂。而使用正则表达式,

宅男很神经 1859

Python 正则式学习笔记

1.  Python正则式的基本用法 1.1基本规则 1.2重复 1.2.1最小匹配与精确匹配 1.3前向界定与后向界定 1.4组的基本知识 2.  re模块的基本函数 2.1使用compile加速 2.2 match和search 2.3 finditer 2.4 字符串的修改与替换 3.  更深入的了解re的组与对象 3.1编译后的Pattern对象 3.2

whycadi的专栏 6万+

Python高级正则表达式

介绍 在我们教程的正则表达式介绍中,我们已经介绍了正则表达式的基本原理。我们已经展示了最简单的正则表达式的样子。我们还学习了如何通过使用 re 模块的 search() 和 match() 方法在 Python 中使用正则表达式。制定和使用字符类的概念,以及预定义的字符类,如 \d、\D、\s、\S 等,现在应该是众所周知的。您一定已经学会了如何使用正则表达式匹配字符串的开头和结尾。您必须知道问号的特殊含义才能使项目可选。我们还引入了量词来任意或在特定范围内重复字符和组。 您还必须熟悉分组的使用以及

pythonandaiot的博客 999

python的正则表达式

正则表达式 正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对 字符串的一种过滤逻辑。正则表达式是一种文本模式,该模式描述在搜索文本时要匹配的一个或多个字符串。 上面都是官方的说明,通过事先规定好一些特殊字符的匹配规则,然后利用这些字符进行组合来匹配各种复杂的字符串场景。比如现在的爬虫和数据分析,字符串校验等等都需要用到正则表达式来处理数

weixin_51398385的博客 3614

Python:进阶 Python3 正则表达式

在 Python 中,`re` 模块让我们可以轻松运用正则表达式。

Kant2048的博客 1570

Oracle Linux中/var/log/pcp/pmlogger目录膨胀问题分析与解决

本文详细分析了Oracle Linux系统中/var/log/pcp/pmlogger目录异常膨胀的常见原因与解决方案。当PCP性能监控框架的pmlogger服务日志轮转或清理机制失效时,会导致该目录无限增长,威胁系统稳定。文章提供了从服务状态诊断、配置文件审查到安全清理与预防策略的全流程实战指南,帮助运维人员快速回收磁盘空间并恢复服务正常运行。

weixin_29208327的博客 370

Python正则表达式

在python学习过程中,不可避免地需要用到正则表达式,同时,整个软件开发编程过程中,对于正则表达式表达式的使用无处不在,所以,在此总结一下正则表达式的语法及使用样例。正则表达式是一种强大的文本处理工具,Python 的 re 模块提供了丰富的功能来实现正则表达式的应用。通过掌握正则表达式的语法和 re 模块的方法,可以高效地完成文本匹配、提取、替换等任务。

zhfmei的博客 2019

基于PWM的汽车仪表步进电机微步驱动优化实践

本文深入探讨了基于PWM的微步驱动技术,用于优化汽车仪表步进电机的运行性能。通过将传统的分步驱动升级为PWM微步细分驱动,利用正弦/余弦查表法合成旋转磁场,有效消除了指针抖动与噪声,实现了指针的平滑、精准运动。文章以STM32和VID2905电机为例,提供了详细的硬件连接、代码实现及高级优化技巧,为提升汽车仪表体验提供了实用方案。

weixin_29169505的博客 510

python之正则表达式

使用贪婪匹配或非贪婪匹配取决于具体的匹配需求。需要注意的是,非贪婪匹配可能会导致匹配结果不符合预期,因此在使用时需要谨慎评估和调整。通过这些方法和属性,你可以轻松地提取匹配结果中感兴趣的部分,进行进一步的处理和操作。请注意,在使用这些方法之前,确保匹配结果不是 None,即有匹配成功的结果。然而,在某些情况下,我们可能需要非贪婪匹配,也称为最小匹配。在正则表达式中,贪婪匹配和非贪婪匹配是指匹配模式的匹配方式。,贪婪匹配会尽可能匹配更多的字符,结果是整个字符串被匹配为。,贪婪匹配会匹配整个字符串,结果是。

专注于Python编程技术的分享与交流,致力于帮助开发者提升编程技能,解决实际问题,探索Python的无限可能。 4749

Win10系统安装Ubuntu虚拟机,这回真的是零基础!(结尾附NS3的配置)

Win10系统安装Ubuntu虚拟机(结尾附NS3的配置) 序幕 本人现在还在念大二,有一门很有趣而且老师讲得也不错的课程《计算机网络原理》。这周老师布置了一个实验《NS3网络模拟》,为了详细记录本次实验过程,顺便也便于自己复习,就写了这篇博客,希望能够对你有帮助! NS3是什么呢?实际上就是一门算法,和计算机网络有关的。不过在我们日常使用的Windows系统上去做这个实验是行不通的,这个实验一定要在Linux系统上进行模拟才能玩的下去,作为一名 Windows选手对此表示不爽但是没办法,为了实验也只

灼热之翼的博客 7381

Lumerical官方案例、FDTD时域有限差分法仿真学习(三)——环形谐振器(Ring resonator)之第一部分

环形谐振器教程的第 1 部分使用 MODE 来设计和仿真环形谐振器。 自由光谱范围 (FSR) 和品质因数 (Q 因数) 是这种面向片上通信应用的基于绝缘体上硅 (SOI) 波导设计的关键性能指标。

weixin_45719141的博客 3万+

python正则表达式

学会使用常见的正则表达式一、 正则表达式基础1.1.概念介绍正则表达式是用于处理字符串的强大工具,它并不是Python的一部分。其他编程语言中也有正则表达式的概念,区别只在于不同的编程语言实现支持的语法数量不同。它拥有自己独特的语法以及一个独立的处理引擎,在提供了正则表达式的语言里,正则表达式的语法都是一样的。下图展示了使用正则表达式进行匹配的流程: 1.2. 数量词的贪婪模式与非贪婪模式正则表达式通常用于在文本中查找匹配的字符串。贪婪模式,总是尝试匹配尽可能多的字符;非贪婪模式则相反,总是尝试匹配尽可能少

阿极的博客 9746

ZYNQ学习:PL端DDR3 读写测试

DDR SDRAM 的最大特点是双沿触发,即在时钟的上升沿和下降沿都能进行数据采集和发送,同样的工作时钟, DDR SDRAM 的读写速度可以比传统的 SDRAM 快一倍。本次实验使用的 DDR3 芯片是南亚的 NT5CC256M16ER-EKI, NT5CC256M16ER-EKI 的 bank 位宽为 3,行位宽为 15,列位宽为 10,所以它的地址大小等于 2^3*2^15*2^10(即 2^28=256M),数据位宽为 16bit,所以容量大小为 256M*16bit,也就是 512MByte。

shuidiQAQ的博客 3029

Python爬虫之正则表达式

Python爬虫之正则表达式 文章目录Python爬虫之正则表达式什么是正则表达式?正则表达式的特殊字符正则表达式的长用方法分组功能位置匹配贪婪匹配和非贪婪匹配 什么是正则表达式? 正则表达式是通过一些特殊的符号组成的字符串,这组字符串被称为模板;通过模板然后与目标串进行匹配,将与之相匹配的字符串取出。这就是正则表达式的作用 正则表达式的特殊字符 “ . ”符号可以匹配除换行符意外的任意一个字符 r = re.match(r'a.c', 'a你c').group() print(r) #a你c r

m0_46428072的博客 2114

YOLOv8改进002:添加小目标检测头(小目标检测大量涨点)

YOLOv8 目标检测算法改进之添加小目标检测头,亲测在小目标检测的数据集上有大幅度的涨点效果(mAP直接涨了 0.04 左右)。

m0_46496775的博客 9875

基于A*算法的二维栅格地图路径规划与避障MATLAB仿真

本文将介绍如何使用MATLAB编写基于A*算法的二维栅格地图路径规划与避障的仿真程序。我们可以使用二维数组表示地图,其中每个元素表示一个栅格的状态,例如1表示障碍物,0表示可行走区域。接下来,我们需要定义A*算法的节点类。G值表示从起始节点到当前节点的代价,H值是启发式函数估计的从当前节点到目标节点的代价。算法,我们可以有效地找到起始点到目标点的最短路径,并在仿真中进行可视化展示。算法的基本思路是从起始节点开始,按照一定的启发式函数选择下一个节点,直到找到目标节点或者遍历完所有可行走区域。

ByteWhizX的博客 1272

python正则表达式在线_python正则表达式

正则表达式正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。作用1.检测某个字符串是否符合规则.比如:判断手机号,身份证号是否合法2.提取网页字符串中想要的数据.比如:爬虫中,提取网站天气,信息,股票代码,星座运势等具体关键字在线测试工具正则...

weixin_39751076的博客 1719

k8s配置habor作为镜像地址之后,如果harbor中没有镜像,如何设置自动从阿里云官方镜像仓库下载

通过 Harbor 的远端仓库可以集中管理。如果你在上游设置了 image prefix 为 library,那么对外访问 harbor.your-domain.com/library/nginx:latest 就会被 Harbor 去上游拉取 registry.cn-hangzhou.aliyuncs.com/library/nginx:latest 并缓存。- 将集群中的镜像地址改为 Harbor 的域名,比如 harbor.your-domain.com/library/nginx:latest。

极客栈 422

Python 正则表达式

re模块: compile () #编译 sub() #替换 match () #从头匹配数据 search() #查找 正则表达式的一元字符: . #该符号 点 匹配所有符号,除了换行符(\n) \w #匹配有效符号(python3中包含了各国常用的语言符号) [ A-Za-z0-9_ ] #匹配有效符号 \d #匹配数字 \s #匹配空白位(空格、\t制表符) [abcdef] #匹配中括号中的某一个符号(列举): [a-z] #中括号中若出现 - 表...

Wuhao9_的博客 3325

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Python之正则表达式——查找

正则表达式: 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。 Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式。 re 模块使 Python 语言拥有全部的正则表达式功能。 compile 函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象。该对象拥有一系列方法用于正则表达式匹配和替换。 re 模块也提供...

青柚的博客 7522

蓝牙模块HM-10手册

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

上一篇: Linux环境中vim的使用
下一篇: 【shell脚本个人随笔记录】
十二月将至
博客等级 码龄8年 378粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值