正则表达式是一种通用的字符串匹配技术,是不会因为编程语言不一样而发生变化的

如果想查找对应规则的字符串,就可以用正则表达式
python中要使用正则表达式需使用re模块,它是正则表达式在python中的封装

1.匹配的方式:match、search、findall

1.1 match 表示: 从开始的位置进行匹配,即从第一个字符开始匹配,第一个没有匹配到,则整个就不会匹配到
# 匹配特定的字符串  "abc"
import re re_pattern = r'abc'#写匹配规则式时,要加上转意字符r
res = re.match(re_pattern, "abwofowpqfowfjowefjiwoefabcowof")
# 从 "wofowpqfowfjowefjiwoefabcowof" 这个字符串当中匹配是否 有 re_pattern
# match 表示: 从开始的位置进行匹配,即从第一个字符开始匹配,第一个没有匹配到,则整个就不会匹配到
print(res)

 1.2search  全文匹配,如果表达式有多处可以匹配到,只会返回第一个匹配到的结果

# search, 全文匹配,如果表达式有多处可以匹配到,只会返回第一个匹配到的结果
res = re.search(re_pattern, "abcwofowpqfowfjowefjiwoefabcowof")
print(res)

 

1.3findall 全部匹配,如果表达式有多处可以匹配到,结果也会返回多个

# findall, 全部匹配,如果表达式有多处可以匹配到,结果也会返回多个
res = re.findall(re_pattern, "abcwofowpqfowfjowefjiwoefabcowof")
print(res)

  

2.语法

2.1 [abc] 匹配中括号中的任意一个字符

# [abc], 匹配中括号中的任意一个字符
re_pattern = r'[abc]',
res = re.findall(re_pattern, "abcwofowpqfowfjowefjiwoefabcowof")
print(res)

2.2  .匹配任意一个字符串 除了 \n

# . 匹配任意一个字符
re_pattern = r'.',
res = re.findall(re_pattern, "abcwofowpqfowfjowefjiwoefabcowof")
print(res)

  

2.3 \d 匹配数字,相当于[0-9]

# \d  匹配数字 data,相当于[0-9]
re_pattern = r'\d'
res = re.findall(re_pattern, "a123bcwofowpqfowfjowefjiwoefabcowof")
print(res)

  

2.4 \D 匹配非数字

# \D  匹配非数字 data
re_pattern = r'\D'
res = re.findall(re_pattern, "a@123bcwofowpqfowfjowefjiwoefabcowof")
print(res)

  

2.5 \w 匹配字母、数字、下划线 相当于[A-Za-z0-9_]

# \w  匹配字母,数字,下划线
re_pattern = r'\w'
res = re.findall(re_pattern, "a@_123bcwofowpqfowfjowefjiwoefabcowof")
print(res)

2.6 \W 反向的, 非匹配字母,数字,下划线

2.7{}匹配花括号当中次数,一般要和其他的规则配合使用

# 匹配花括号当中的数字次,  匹配几次,
re_pattern = r'\d{2}'
res = re.findall(re_pattern, "aa@_123b&cwofowpqfowfjowefjiwoefabcowof")
print(res)

  

2.8 {2, } 匹配至少 2 次

#  {2, } 匹配至少 2 次
# TODO: 正则表达式当中,千万不要手残,空格不能随便打
# 贪婪模式, python 当中
re_pattern = r'\w{2,}'
res = re.findall(re_pattern, "aa@_123b&cwofowpqfowfjowefjiwoefabcowof")
print(res)

  

2.9  {,2} 匹配最多 2 次

# {,2} 匹配最多 2 次
re_pattern = r'\w{,2}'
res = re.findall(re_pattern, "aa@_123b&cwofowpqfowfjowefjiwoefabcowof")
print(res)

  

2.10 {2,4} 匹配 2 -4 次,最少匹配2,最多匹配4次

# {2,4} 匹配 2 -4 次,最少匹配2,最多匹配4次
re_pattern = r'\w{2,4}'
res = re.findall(re_pattern, "aa@_123b&cwofowpqfowfjowefjiwoefabcowof")
print(res)

  

例子:匹配手机号码

# 如何去匹配一个手机号码
# re_pattern = r'1[35789]\d{9}'
# res = re.findall(re_pattern, "aa@_123b&cwo17520208510fowpqfowfjowefjiwoefabcowof")
# print(res)

  

2.11 *匹配0次或者任意次,通配符

# # * 匹配 0 次或者任意次, 通配符,
# re_pattern = r'\d*'
# res = re.findall(re_pattern, "aa@_123b&cwo17520208510fowpqfowfjowefjiwoefabcowof")
# print(res)

  

 

2.12 + 匹配1次或者任意次数,通配符

# +  匹配 1 次或者任意次, 通配符,
# re_pattern = r'\d+'
# res = re.findall(re_pattern, "aa@_123b&cwo17520208510fowpqfowfjowefjiwoefabcowof")
# print(res)

  

2.13 ? 匹配 0 次或者 1 次,非贪婪模式

# ? 匹配 0 次或者 1 次
re_pattern = r'\d?'
res = re.findall(re_pattern, "aa@_123b&cwo17520208510fowpqfowfjowefjiwoefabcowof")
print(res)

  

2.14 ^开头

# ^ 开头
re_pattern = r'^\d'
res = re.findall(re_pattern, "1aa@_123b&cwo17520208510fowpqfowfjowefjiwoefabcowof")
print(res)

  

2.15 $结尾

# # $结尾
# re_pattern = r'\d*$'
# res = re.findall(re_pattern, "jiwoefabcowof3434")
# print(res)

 

2.16组,findall中是用括号表示

search中用.group()表示

# # 组,如果你要匹配的内容,显示出来不包含首位的字符,可以加上括号
re_pattern = r'#(.*?)#'
res = re.findall(re_pattern, mystr)
print(res)

  

3.替换 re.sub()

# # 替换 re.sub() 替换操作(正则表达式,替换成的字符串,被替换的字符串)
# mystr = re.sub(re_pattern, 'me123', mystr, 1)

  

  

 



python中正则表达式的更多相关文章

  1. python 中 正则表达式 的应用

    python 中 正则表达式 的应用 最近作业中出现了正则表达式,顺便学习了一下. python比较厉害的一点就是自带对正则表达式的支持,用起来很方便 正则表达式 首先介绍一下什么是正则表达式. 正则 ...

  2. 第11.20节 Python 中正则表达式的扩展功能:后视断言、后视取反

    一. 引言 在<第11.19节 Python 中正则表达式的扩展功能:前视断言和前视取反>中老猿介绍了前视断言和前视取反,与二者对应的还有后视断言和后视取反. 二. (?<=-)后视 ...

  3. python中正则表达式 re.findall 用法

    在python中,通过内嵌集成re模块,程序媛们可以直接调用来实现正则匹配. 其中,re.findall() 函数可以遍历匹配,可以获取字符串中所有匹配的字符串,返回一个列表. 在python源代码中 ...

  4. python中正则表达式re模块详解

    正则表达式是处理字符串的强大工具,它有自己特定的语法结构,有了它,实现字符串的检索,替换,匹配验证都不在话下. 当然,对于爬虫来说,有了它,从HTML里提取想要的信息就非常方便了. 先看一下常用的匹配 ...

  5. python中正则表达式在中文字符串匹配时的坑

    之前一直有使用python 正则表达式来做中文字符串或者中英文数字混合的字符串的匹配,发现有不少情况下会匹配失灵或者结果混乱,并且在不同操作系统上匹配结果也不一致,查了很久都不知道是什么原因.今天终于 ...

  6. js中正则表达式与Python中正则表达式的区别

    今天女票让我帮她写一个js中的正则,来提取电话号码,对于正则规则来说,js与python是基本没有区别的,重点的区别是在一些函数与方法中. python中的正则提取: import re str = ...

  7. Python中正则表达式讲解

    正则表达式是匹配字符串的强大武器,它的核心思想是给字符串定义规则,凡是符合规则的字符串就是匹配了,否则就是不合法的.在介绍Python的用法之前,我们先讲解一下正则表达式的规则,然后再介绍在Pytho ...

  8. 关于Python中正则表达式的反斜杠问题

    之前总是搞不明白正则表达式中的反斜杠的问题.今天经过查阅资料终于搞明白了. 其中最重要的一点就是Python自己的字符串中定义的反斜杠也是转义字符,而正则表达式中的反斜杠也是转义字符,所以正则表达式中 ...

  9. 第11.21节 Python 中正则表达式的其他扩展功能

    一. 引言 在<第11.17节 Python 正则表达式扩展功能:命名组功能及组的反向引用>中老猿介绍了组匹配模式的命名组功能及引用组功能,这两者都是正则表达式的扩展功能,其实在re模块中 ...

随机推荐

  1. python识别视频黑屏或者低清晰度

    第一步:获取视频第一帧图片 https://www.cnblogs.com/pythonywy/p/13749735.html 第二步:进行识别 import os import numpy as n ...

  2. 使用websocket连接(对接)asp.net core signalr

    使用通用websocket连接asp.net core signalr 一.背景介绍 signalr的功能很强大,可以为我们实现websocket服务端节省不少的时间.但是可能由于不同的环境,我们在对 ...

  3. scott lock

    账户被锁: cmd --->sqlplus /nolog--->conn sys/change_on_install as sysdba;---->alter user scott ...

  4. MySQL全面瓦解:安装部署与准备

    下载与安装 互联网高速时代下,我们的生活发生了巨大的变化,从购物(淘宝.京东),出行(滴滴.快狗),支付(支付宝.微信)等,遍及我们生活的方方面面,我们使用这些系统和应用的时候,会在上面获取.存储大量 ...

  5. 【4】TensorFlow光速入门-保存模型及加载模型并使用

    本文地址:https://www.cnblogs.com/tujia/p/13862360.html 系列文章: [0]TensorFlow光速入门-序 [1]TensorFlow光速入门-tenso ...

  6. Spark为什么只有在调用action时才会触发任务执行呢(附算子优化和使用示例)?

    Spark算子主要划分为两类:transformation和action,并且只有action算子触发的时候才会真正执行任务.还记得之前的文章<Spark RDD详解>中提到,Spark ...

  7. 【总结】mybatis分页(实现 + 原理)

    1.mybatis pageHelper分页实现 (1)引入依赖 (2)配置pageHelper插件 <configuration> <!-- 引入 pageHelper插件 --& ...

  8. Linux系统下安装配置JDK(rpm方式及tar.gz方式)

    以前都是在Windows环境进行开发的,最近因工作需要:学习在Linux系统下搭建开发环境,自此记录搭建过程,以方便查阅. 本文借鉴了 Angel挤一挤 .小五 两位的博客. 准备材料: JDK下载链 ...

  9. DevExpress XtraReport报表预览时可编辑的功能

    设置控件的EditOptions.Enabled=true即可 注册实现PrintingSystem. EditingFieldChanged事件,可获得当前发生更改的控件的值. 另:XtraRepo ...

  10. CEF避坑指南(一)——编译并自制浏览器

    CEF即Chromium Embedded Framework,Chrome浏览器嵌入式框架.我们可以从自制浏览器入手,深入学习它.它提供了接口供程序员们把Chrome放到自己的程序中.许多大型公司, ...