Python中的正则表达式 !

Python正则表达式中的转义问题\\\\\\\\\????(焯!什么鬼) 这次写这篇博客是一个容易把自己绕糊涂的问题 就是转义问题啦(开练开练) 转义字符和原生字符串: 首先讲一下一些基础的概念 转义字符和原生字符串的区别 ‘\n’代表换行,是一个转义字符 r'\n'代表的是字符串“\n”,并没有换行的意思,就单单是一个字符串,这个就是原生字符串 通俗来讲就是,原生字符串就是你一眼看到的是字符串是什么就是什么,而转义字符就是需要通过转义才能表达出... 阅读详情

什么是正则表达式

世界上分为两种人,一种是懂正则表达式的,一种是不懂正则表达式的

按照一定的规则,从某个字符串中匹配出想要的数据,这个规则就是正则表达式

正则表达式常用的匹配规则

匹配某个字符串

  •  
text = 'hello'ret = re.match('he', text)print(ret.group())# >> he

Python资源共享群:626017123

点(.) 匹配任意的字符串

  •  
text = 'ab'ret = re.match('.', text)print(ret.group())# >> a

 

\d 匹配任意的数字

  •  
text = '123'ret = re.match('\d', text)print(ret.group())# >> 1

 

\D 匹配任意的非数字

  •  
text = "a"ret = re.match('\D',text)print(ret.group())# >> a

如果text为一个数字,那么就匹配不成功了

  •  
text = "1"ret = re.match('\D',text)print(ret.group())# >> AttributeError: 'NoneType' object has no attribute 'group'

 

\s 匹配的是空白字符串(包括:\n,\t,\r,空格)

  •  
text = "\t"ret = re.match('\s',text)print(ret.group())# >> 此处是一个空白

 

\w 匹配的是 a-z 和 A-Z 以及数字和下划线

  •  
text = "_"ret = re.match('\w',text)print(ret.group())# >> _

如果要匹配一个其他的字符,那么就匹配不到

  •  
text = "+"ret = re.match('\w',text)print(ret.group())# >> AttributeError: 'NoneType' object has no attribute

 

\W 匹配的是和 \w 相反的

  •  
text = "+"ret = re.match('\W',text)print(ret.group())# >> +

如果你的text是一个下划线或者英文字符,那么就匹配不到了

  •  
text = "_"ret = re.match('\W',text)print(ret.group())# >> AttributeError: 'NoneType' object has no attribute

 

[] 组合的方式,只要满足中括号中的某一项都算匹配成功

  •  
text = "027-88888888"ret = re.match('[\d\-]+',text)print(ret.group())# >> 027-88888888

其实可以使用中括号代替几种默认的匹配规则

  • \d :[0-9]
  • \D :0-9
  • \w :[0-9a-zA-Z_]
  • \W :[^0-9a-zA-Z_]

匹配多个字符

*:可以匹配0或者任意多个字符

  •  
text = '8888'ret = re.match('\d*',text)print(ret.group())# >> 8888

以上因为匹配的要求是 \d ,那么就要求是数字,后面跟了一个星号,就可以匹配到8888这四个字符

+:可以匹配1个或者多个字符,最少一个

  •  
text = "abc"ret = re.match('\w+',text)print(ret.group())# >> abc

因为匹配的是\w ,那么就要求是英文字符,后面跟了一个加号,意味着最少要有一个满足 \w 的字符才能够匹配到。如果text是一个空白字符或者是一个不满足\w的字符,就会报错

  •  
text = ""ret = re.match('\w+',text)print(ret.group())# >> AttributeError: 'NoneType' object has no attribute

 

?:匹配的字符可以出现一次或者不出现(0或者1)

  •  
text = "123"ret = re.match('\d?',text)print(ret.group())# >> 1

 

{m}:匹配m个字符

  •  
text = "123"ret = re.match('\d{2}',text)print(ret.group())# >> 12

 

{m,n}:匹配 m-n 个字符,在这中间的字符都可以匹配到

  •  
text = "123"ret = re.match('\d{1,2}',text)prit(ret.group())# >> 12

如果text只有一个字符,也可以匹配出来

  •  
text = "1"ret = re.match('\d{1,2}',text)prit(ret.group())# >> 1

 

几个实际的案例(以给出的文本为例)

  • 验证手机号码:手机号码的规则是以1开头,第二位可以是34587,后面那9位就可以随意了
text = "18570631587"ret = re.match('1[34587]\d{9}',text)print(ret.group())# >> 18570631587
  • 如果是个不满足条件的手机号码。那么就匹配不到了
text = "1857063158"ret = re.match('1[34587]\d{9}',text)print(ret.group())# >> AttributeError: 'NoneType' object has no attribute
  • 验证邮箱:邮箱的规则是邮箱名称是用数字、数字、下划线组成的,然后是@符号,后面就是域名了
text = "hynever@163.com"ret = re.match('\w+@\w+\.[a-zA-Z\.]+',text)print(ret.group())
  • 验证URL:URL的规则是前面是http或者https或者是ftp然后再加上一个冒号,再加上一个斜杠,再后面就是可以出现任意非空白字符了
text = "http://www.baidu.com/"ret = re.match('(http|https|ftp)://[^\s]+',text)print(ret.group())
  • 验证身份证:身份证的规则是,总共有18位,前面17位都是数字,后面一位可以是数字,也可以是小写的x,也可以是大写的X
text = "3113111890812323X"ret = re.match('\d{17}[\dxX]',text)print(ret.group())

 

^:表示以…开始

  •  
text = "hello"ret = re.match('^h',text)print(ret.group())

如果是在中括号中,代表的是取反操作

$:表示以…结束

  •  
# 匹配163.com的邮箱text = "xxx@163.com"ret = re.search('\w+@163\.com$',text)print(ret.group())# >> xxx@163.com

 

|:匹配多个表达式或者字符串

  •  
text = "hello|world"ret = re.search('hello',text)print(ret.group())# >> hello

 

贪婪模式和非贪婪模式

  • 贪婪模式:正则表达式会匹配尽量多的字符,默认是贪婪模式。
  • 非贪婪模式:正则表达式会尽量少的匹配字符。
text = "0123456"ret = re.match('\d+',text)print(ret.group())# 因为默认采用贪婪模式,所以会输出0123456

可以改成非贪婪模式,就只会匹配到0

  •  
text = "0123456"ret = re.match('\d+?',text)print(ret.group())

 

匹配0-100之间的数字

  •  
text = '99'ret = re.match('[1-9]?\d$|100$',text)print(ret.group())

如果text=101,就会抛出一个异常

  •  
text = '101'ret = re.match('[1-9]?\d$|100$',text)print(ret.group())# >> AttributeError: 'NoneType' object has no attribute 'group'

 

转义字符和原生字符

在正则表达式中,有些字符是有特殊意义的字符,在 Python 中 \ 也是用来转义的,因此如果想要在普通的字符串中匹配 \ ,那么就要给出 四个 \

  •  
text = "apple \c"ret = re.search('\\\\c',text)print(ret.group())

所以要使用原生字符就可以解决这个问题

  •  
text = "apple \c"ret = re.search(r'\\c',text)print(ret.group())
Unity物理驱动3D汽车实现:从刚体控制到参数调优 在游戏开发中,刚体物理是实现真实物体运动与交互的核心技术。通过Unity的物理引擎,开发者可以模拟重力、碰撞、摩擦力等物理行为,为游戏世界注入真实感。其技术价值在于能够以符合物理规律的方式驱动游戏对象,避免穿墙、无视惯性等问题,从而提升游戏体验的真实性和沉浸感。这一原理广泛应用于角色控制、车辆模拟、物体破坏等场景。本文以3D小汽车为例,详细解析了如何通过Rigidbody组件施加力与扭矩,并利用C#脚本实现玩家输入逻辑,完成一辆可操控、能碰撞的物理驱动汽车。文中重点探讨了AddForce与角速度控制两种方案 阅读详情

相关推荐

C# 开发 WPS 插件实战:从环境搭建到功能实现(附完整代码)

本文提供了一份详尽的C#开发WPS插件实战指南,涵盖从环境搭建到功能实现的完整流程。通过COM技术,开发者可以创建自定义插件,为WPS Office扩展自动化功能,如文档处理与格式转换。文章包含核心概念解析、Ribbon界面集成、调试部署方法及完整代码示例,帮助开发者快速上手。

rust6ferris的博客 928

Python3爬虫笔记 -- 正则表达式

常用的匹配规则: 模式 描述 \w 匹配字母、数字及下划线 \W 匹配不是字母、数字及下划线的字符 \s 匹配任意空白字符,等价于[\t\n\r\f] \S 匹配任意非空字符 \d 匹配任意数字,等价于[0-9] \D 匹配任意非数字的字符 \A 匹配字符串开头 \Z 匹配字符串结尾,如果存在换行,只匹配到换行前的结束字符串 \z 匹配字符串结尾,如...

When you collect everything, you understand nothing. 394

相机标定-张正友棋盘格标定法

(X,Y,Z)为在世界坐标系下一点的物理坐标 ( u , v ) 为该点对应的在像素坐标系下的像素坐标 引入齐次坐标的原因:引入齐次坐标的目的是为了升维,将坐标从二维坐标变为三维坐标。 2.相机成像过程 相机成像系统中,共包含四个坐标系:世界坐标系、相机坐标系、图像坐标系、像素坐标系。 (1)世界坐标系(,,) 描述目标在真实世界中的位置引入的参考坐标系。 (2)相机坐标系(,,) ...

qq_41275123的博客 1万+

python正则表达式匹配字母和下划线_python正则表达式re.match()匹配多个字符方法的实现...

python正则表达式re.match()匹配多个字符方法的实现,字符,多个,变量名,数字,字母python正则表达式re.match()匹配多个字符方法的实现易采站长站,站长之家为您整理了python正则表达式re.match()匹配多个字符方法的实现的相关内容。1. *表示匹配任意多个字符 \d*表示匹配任意多个数字字符import retext = "123h1ello world"t...

weixin_28812983的博客 6240

A*(star)算法原理讲解以及程序实现(基于Python)

本文将以迷宫探索最优路径为例,讲解A *搜索算法原理及其程序实现。在原理讲解部分,首先从为什么要使用A *搜索算法和A *搜索算法的全局最优逻辑出发,讲解A *算法的原理。其次对A *的行动函数g(n)和启发函数h(n)的细节进行了讲解说明,并补充了启发函数的选择对于A *算法的影响。在程序实现部分,首先从程序流程框图出发,解释A *算法的流程。其次按函数的类划分并讲解主要代码,接着展示程序的运行结果,最后对A *算法进行总结分析。

m0_73366745的博客 8282

excel 如何自动调整行间距 vba

EXCEL是一个非常使用的软件,虽然我们平时仅使用他做一些报表,仅此而已;我在工作中,由于很懒,不愿意做考试重复的工作,就想着使用vba的宏来完成重复的工作,这样就能省出一部分的时间来了。本人不喜欢在博客里面写以下教程类的东西,我的理念是将工作中的痛点的解决办法分享出来,以解决问题为主。

sixtome 1316

正则表达式——re.match方法

正则表达式 导入模块import re match()从左往右,从起始部分开始匹配 1.单字符匹配打印----match()方法,group()方法 text = 'python' reslut = re.match('py', text) # 结果存储在一个Object对象里,使用group打印 print(reslut.group()) # 2.'.'匹配任意字符,但无法匹配换行符'\n' text = '_1python' reslut = re.match('.', text) print(res

qq_38812806的博客 1850

4、基于球面波展开的近场/远场变换技术解析

本文深入解析了基于球面波展开的近场/远场变换技术,涵盖坐标系统选择、截断测量处理、高级SWE方法及实际应用场景。重点介绍了广义SWE、全探头补偿、平移SNF测量(TSWE)等关键技术,结合吸收材料与导电地板系统的误差处理方案,系统总结了各类方法的优缺点与适用场景,并通过流程图和案例分析展示了技术应用路径。该技术在汽车、通信和航空航天领域的天线测量中具有重要价值,可显著提升测量效率与精度。

dell8的博客 255

正则表达式,从最后17位是由字母和数字组成的字符串中正则匹配最后17位

正则表达式(regular expression):描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。 python实现正则匹配的接口如下: import re phoneRegex=re.compile(r'((\d{3}|\(\d{3}\...

jiao_mrswang的博客 2020

新能源汽车电池及充电原理详解

本文详细介绍了新能源汽车的电池包结构、铅酸电池充放电原理,以及交流和直流充电的工作原理和优缺点。内容涵盖电池串联并联原因、充电设备如车载充电机、交流充电桩和直流充电桩的介绍,以及不同充电模式的连接方式。通过对充电过程的深入探讨,有助于读者理解新能源汽车的充电技术。

让你爱上电路设计 4525

飞牛NAS打造成童年经典游戏机

这篇文章介绍如何使用飞牛NAS搭建经典游戏模拟器。首先需开启Docker并下载RetroArch-web镜像,随后创建容器并设置端口映射。启动后上传游戏ROM文件(如NES格式),在模拟器中加载即可游玩。文章以修改版坦克大战为例,详细说明按键配置方法。同时还提到公网访问需配置DDNS或使用ZeroTier内网穿透。通过这套方案,用户可以在NAS上重温红白机等经典游戏体验。

dgnankai的专栏 885

身份证号码 出生年月 以及有效校验位 正则表达式判断

/** * 身份证号码格式校验 */ function isIdCardNo (str) { // 身份证号码正则表达式 var rpIdcard = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/; var len, re; len = str.length; if (rpIdcard.test(str)

网络改变中国 3565

Devexpress16.2.6破解工具

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

实用正则表达式技巧:Python 中的高效文本处理!

正则表达式是Python中强大的文本处理工具,它可以以精确的方式查找、匹配和操作文本模式。本文提供了详细的语法解释和丰富的示例代码,希望能够帮助大家更好地理解和利用正则表达式在Python中的应用。

GitHub_miao的博客 1113

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

android 蓝牙通讯demo

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

python中的正则表达式re_Python中的正则表达式(re模块)!非常重要!

一、简介正则表达式本身是一种小型的、高度专业化的编程语言,而在python中,通过内嵌集成re模块,程序媛们可以直接调用来实现正则匹配。正则表达式模式被编译成一系列的字节码,然后由用C编写的匹配引擎执行。二、正则表达式中常用的字符含义1、普通字符和11个元字符:普通字符匹配自身abcabc.匹配任意除换行符"\n"外的字符(在DOTALL模式中也能匹配换行符a.cabc\转义字符,使后一个字符改变...

weixin_39946767的博客 217

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

【Python中的字符串处理】正则表达式与常用字符串操作技巧!

Python 为我们提供了丰富的字符串操作方法和正则表达式工具,帮助我们高效处理文本数据。本文详细介绍了字符串的基本操作,包括拼接、格式化、查找、替换等。同时,我们还探讨了如何借助正则表达式来处理复杂的模式匹配和文本替换任务。无论是简单的字符串操作还是复杂的模式匹配,掌握这些技术将帮助你更高效地处理文本数据,提高代码的可读性和性能。随着对字符串操作的不断深入理解,你将能够更好地应对实际项目中的各种字符串处理需求。

萧鼎的博客 1503

python正则表达式怎么表示零个或多个字符_正则表达式中的分组、或与非!

我的目标:让中国的大学生走出校门的那一刻就已经具备这些office技能,让职场人士能高效使用office为其服务。支持我,也为自己加油!为了匹配各种类型的字符,正则表达式中引入了元字符;为了解决匹配字符的个数,正则表达式中引入了量词;但有时需要匹配单个字符,有时又需要把字符串作为一个整体来匹配,所以正则表达式中又引入了一个概念,分组。如:abc{2,} 与 (abc){2,}是两个完全不...

weixin_39915427的博客 921

fei 正则表达式_Python中的正则表达式(re模块)!非常重要!

一、简介正则表达式本身是一种小型的、高度专业化的编程语言,而在python中,通过内嵌集成re模块,程序媛们可以直接调用来实现正则匹配。正则表达式模式被编译成一系列的字节码,然后由用C编写的匹配引擎执行。二、正则表达式中常用的字符含义1、普通字符和11个元字符:普通字符匹配自身abcabc.匹配任意除换行符"n"外的字符(在DOTALL模式中也能匹配换行符a.cabc转义字符,使后一个字符改变原来...

weixin_39760389的博客 154

python中的正则表达式用于什么字符串_Python中正则表达式的巧妙使用 !

前言正则表达式就是从字符串中发现规律,并通过“抽象”的符号表达出来。打个比方,对于2,5,10,17,26,37这样的数字序列,如何计算第7个值,肯定要先找该序列的规律,然后用n2+1这个表达式来描述其规律,进而得到第7个值为50。对于需要匹配的字符串来说,同样把发现规律作为第一步,本文主要使用正则表达式完成字符串的查询匹配、替换匹配和分割匹配。常用的正则符号在进入字符串的匹配之前,先来了解一下都...

weixin_39950057的博客 100

re匹配截至到第一个中文_Python中的正则表达式(re模块)!非常重要!

一、简介正则表达式本身是一种小型的、高度专业化的编程语言,而在python中,通过内嵌集成re模块,程序媛们可以直接调用来实现正则匹配。正则表达式模式被编译成一系列的字节码,然后由用C编写的匹配引擎执行。二、正则表达式中常用的字符含义1、普通字符和11个元字符:普通字符匹配自身abcabc.匹配任意除换行符"n"外的字符(在DOTALL模式中也能匹配换行符a.cabc转义字符,使后一个字符改变原来...

weixin_39761645的博客 943

python正则表达式中的r与转义字符_Python中正则表达式的巧妙使用 !

前言 正则表达式就是从字符串中发现规律,并通过“抽象”的符号表达出来。打个比方,对于2,5,10,17,26,37这样的数字序列,如何计算第7个值,肯定要先找该序列的规律,然后用n2+1这个表达式来描述其规律,进而得到第7个值为50。对于需要匹配的字符串来说,同样把发现规律作为第一步,本文主要使用正则表达式完成字符串的查询匹配、替换匹配和分割匹配。常用的正则符号在进入字符串的匹配之前,先来了解一下...

weixin_31081671的博客 520

简单的例子理解正则表达式中的前瞻与后顾

关于正则表达式中 (?<=exp) (?<!exp) (?=exp) (?!exp) 的理解 ps: 标题中不能用英文 <>, 所以这样写了. 理解理解 测试文本: “中国人民, 法国人民, 法国政府, 美国人民” 匹配式: (?<=中国)人民 匹配效果: 中国人民, 法国人民, 法国政府, 美国人民 匹配式: (?<!中国)人民 匹配效果: 中国人

Likianta 的博客 1177

正则表达式

s 换行符和制表符。

flash的博客 123

python正则匹配特殊字符_python字符串转义与正则表达式特殊字符转义

最近在自学python,字符串和正则表达式的特殊字符转义有点混淆,做个笔记简单总结一下。1.普通字符串转义在字符串中使用特殊字符时,要用反斜杠(\)转义字符。例如:'Let\'s go!',这里对单引号进行转义。在不想把反斜线当作特殊字符时,可以使用原始字符串,原始字符串以r开头。例如:print r'C:\nowhere'等价于print 'C:\\nowhere'2. 正则表达式中特殊字符转义...

weixin_39738115的博客 813

python正则表达式match、search使用实例的代码

把内容过程中比较好的一些内容段备份一下,如下内容段是关于python正则表达式match、search使用实例的内容,应该能对各朋友也有用途。 import re def testsearchandmatch(): s1=“helloworld, i am 30 !” w1 = “world” m1 = re.search(w1, s1) if m1: print(“find : %s” % m1.group()) if re.match(w1, s1) == none: print(“cannot ma

haoguimi的博客 613

Python使用正则表达式,函数是对象

小白自学python,记录每一天成长。

u013797426的博客 185

正则表达式(python)

一、正则表达式基本介绍 1.起源 正则表达式的“祖先”可以一直上溯至对人类神经系统如何工作的早期研究。Warren McCulloch 和 Walter Pitts 这两位神经生理学家研究出一种数学方式来描述这些神经网络。 1956 年, 一位叫 Stephen Kleene 的美国数学家在 McCulloch 和 Pitts 早期工作的基础上,发表了一篇标题为“神经网事件的表示法”的论文,引入了正则表达式的概念。正则表达式就是用来描述他称为“正则集的代数”的表达式,因此采用“正则表达式”这个术语。 随后,

leidawangzi的博客 1587
上一篇: python模拟登陆 requests.session会话劫持 !
下一篇: Python编程神器-解锁会员 !
普通网友
博客等级 码龄7年 438粉丝 263原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值