广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python全栈之路正则函数
  • 159
分享到

Python全栈之路正则函数

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

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

摘要

目录1. 反向引用_命名分组2. 正则函数小提示:总结1. 反向引用_命名分组 # ### 反向引用 import re strvar = "<div>明天又要休息了

1. 反向引用_命名分组


# ### 反向引用
import re
strvar = "<div>明天又要休息了</div>"
obj = re.search("<(.*?)>(.*?)<(.*?)>",strvar)
print(obj)
# 获取匹配到的内容
res1 = obj.group()
print(res1)
# 获取分组里的内容
res2 = obj.groups()
print(res2)
# 反向引用的语法 \1把第一个括号里面匹配到的内容在引用一次
obj = re.search(r"<(.*?)>(.*?)</\1>",strvar)
print(obj)
print(obj.group())
print(obj.groups())
strvar = " z3D4pzd a1b2cab "
obj = re.search(r"(.*?)\d(.*?)\d(.*?)\1\2",strvar)
print(obj)
print(obj.group())
print(obj.groups())
# ### 命名分组
"""
3) (?P<组名>正则表达式) 给这个组起一个名字
4) (?P=组名) 引用之前组的名字,把该组名匹配到的内容放到当前位置
"""
# 写法一
strvar = " z3d4pzd a1b2cab "
obj = re.search(r"(?P<tag1>.*?)\d(?P<tag2>.*?)\d(?P<tag3>.*?)\1\2",strvar)
print(obj)
print(obj.group())
# 写法二
strvar = " z3d4pzd a1b2cab "
obj = re.search(r"(?P<tag1>.*?)\d(?P<tag2>.*?)\d(?P<tag3>.*?)(?P=tag1)(?P=tag2)",strvar)
print(obj)
print(obj.group())

2. 正则函数


# ### 正则函数
import re
# search   通过正则匹配出第一个对象返回,通过group取出对象中的值
strvar = "3+4 6*4"
obj = re.search(r"(\d+[+*]\d+)",strvar)
print(obj)
# 获取匹配到的内容
print(obj.group())
# 获取分组当中的内容 (返回元组)
print(obj.groups())
# match    验证用户输入内容 (了解)
"""search在正则表达式的前面加上^ 等价于 match ,其他用法上一模一样"""
strvar = "a17366668888"
strvar = "17366668888"
# obj = re.search(r"^\d+",strvar)
# obj = re.match(r"\d+",strvar)
# print(obj.group())
print(obj)
# split    切割
strvar = "alex|wusir_xboyww@risky"
lst = re.split("[|_@]",strvar)
print(lst)
strvar = "alex2341273894wusir234234xboyww11111risky"
lst = re.split("\d+",strvar)
print(lst)
# sub      替换 
strvar = "alex|wusir_xboyww@risky"
"""
strvar = strvar.replace("|","&")
strvar = strvar.replace("_","&")
strvar = strvar.replace("@","&")
print(strvar)
"""
# sub(正则,替换的字符,原字符串[,替换的次数])
res = re.sub("[|_@]","&",strvar)
res = re.sub("[|_@]","&",strvar,1)
print(res)
# subn     替换  (用法上与sub相同,只是返回值不同)
res = re.subn("[|_@]","&",strvar)
res = re.subn("[|_@]","&",strvar,2)
print(res) 
# res = re.sub("[|_@]","&",strvar)
# ('alex&wusir&xboyww@risky', 2)
# finditer 匹配字符串中相应内容,返回迭代器
"""返回的是迭代器,迭代器中包含了对象 对象.group来获取匹配到的值"""
from collections import Iterator, Iterable
strvar = "sdf23647fdgdfg()*()*23423423"
it = re.finditer("\d+",strvar)
print(isinstance(it,Iterator))
for obj in it:
	print(obj.group())
# compile  指定一个统一的匹配规则
"""
正常情况下,正则表达式编译一次,执行一次
为了避免反复编译,节省时间空间,可以使用compile统一规则
编译一次,终身受益
"""
strvar = "asdfs234sdf234"
pattern = re.compile("\d+")
print("<===>")
obj = pattern.search(strvar)
print(obj.group())
lst = pattern.findall(strvar)
print(lst)
# 修饰符 
# re.I 使匹配对大小写不敏感
strvar = "<h1>大标题</H1>"
pattern = re.compile("<h1>(.*?)</h1>" , flags=re.I)
obj = pattern.search(strvar)
print(obj.group())
# re.M 使每一行都能够单独匹配(多行匹配),影响 ^ 和 $
"""单行独立匹配,而不是整体匹配"""
strvar = """
<p>111</p>
<a>222</a>
<strong>333</strong>
"""
pattern = re.compile("^<.*?>(?:.*?)<.*?>$" , flags=re.M)
lst = pattern.findall(strvar)
print(lst)
# re.S 使 . 匹配包括换行在内的所有字符
strvar = """
give
sdfsdfmefive
"""
# 多个修饰符一起使用通过|拼接
pattern = re.compile(".*?mefive" , flags = re.S|re.I|re.M )
obj = pattern.search(strvar)
print(obj.group())

小提示:


爬虫爬数据的时候用finditer,数据太大,用迭代器存
strvar = """
<p>111</p>
<a>222</a>
<strong>333</strong>
"""
pattern = re.compile("^<.*?>(?:.*?)<.*?>$")
lst = pattern.findall(strvar)
print(lst) # 这里的结果为[] 因为.不匹配换行符,所以不会返回结果
pattern = re.compile("^<.*?>(?:.*?)<.*?>$",flags=re.M) 这里就是
一行的一行的匹配了
不会用for i in找思路 
不会用.*?找思路

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注编程网的更多内容!

--结束END--

本文标题: Python全栈之路正则函数

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

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python全栈之路正则函数
    目录1. 反向引用_命名分组2. 正则函数小提示:总结1. 反向引用_命名分组 # ### 反向引用 import re strvar = "<div>明天又要休息了...
    99+
    2022-11-12
  • Python全栈之正则表达式
    目录1. 正则表达式_匹配单个字符2. 正则表达式_匹配多个字符3. 正则表达式_匹配分组小提示:4. 小练习答案:总结1. 正则表达式_匹配单个字符 正则表达式在线测试: http...
    99+
    2022-11-12
  • python 全栈之路
    目录 Python 全栈之路 一. Python 1. Python基础知识部分 2. Python -函数 3. ...
    99+
    2023-01-30
    之路 python
  • Python全栈之递归函数
    目录1. 递归函数2. 递归练习3. 小练习总结 1. 递归函数 # ### 递归函数 """ 递归函数 : 自己调用自己的函数 , 叫做递归函数 递 : 去 归 : 回 一去一...
    99+
    2022-11-12
  • Python全栈开发之函数
    No.1 函数介绍 所谓函数,就是把具有独立功能的代码块组织为一个小模块,在需要的时候调用 函数的使用有两个步骤:1、定义函数2、调用函数 函数的作用,代码重用,提高开发效率 No.2 定义和调用 定义函数的格式如下: def 函数名():...
    99+
    2023-01-31
    函数 Python
  • Python全栈之路系列之Python
    The Python interpreter has a number of functions and types built into it that are always available. They are listed her...
    99+
    2023-01-31
    之路 系列之 Python
  • Python全栈之文件函数和函数参数
    目录1. 文件相关函数2. 函数_函数的参数2.1 函数2.2 函数的参数3. 收集参数4. 命名关键字_总结小提示:5. 小练习练习问题:练习答案:总结 1. 文件相关函数 #...
    99+
    2022-11-12
  • Python全栈之路系列之字符串数据类
    字符串(str) 字符串类型是python的序列类型,他的本质就是字符序列,而且python的字符串类型是不可以改变的,你无法将原字符串进行修改,但是可以将字符串的一部分复制到新的字符串中,来达到相同的修改效果。 创建字符串类型可以使用单...
    99+
    2023-01-31
    之路 字符串 数据
  • Python全栈之路系列之文件操作
    Python可以对文件进行查看、创建等功能,可以对文件内容进行添加、修改、删除,且所使用到的函数在Python3.5.x为open,在Python2.7.x同时支持file和open,但是在3.5.x系列移除了file函数。 Python...
    99+
    2023-01-31
    之路 操作 文件
  • Python全栈之迭代器和高阶函数
    目录1. lambda表达式2. locals和globals3. 迭代器小提示:4. map高阶函数5. reduce高阶函数6. filter高阶函数7. sorted高阶函数8...
    99+
    2022-11-12
  • python-3_函数_匿名函数_正则_
    L=['a','b','c','d']for (offset,item) in enumerate(L):    print offset,item打印的结果:0 a1 b2 c4 d迭代器:for i in range(100):    ...
    99+
    2023-01-31
    函数 正则 python
  • python全栈学习之旅正式开始了!
    My frist blog 2018年11月22日,我的第一个博客正式发行。终于开始学习自己喜欢的东西了,之前的学习都是零零碎碎的,只是完成这样一个那样一个小项目,仅仅利用休息的时间去学习IT技术。接下里的日子里 ,争取每天都会用更多的时...
    99+
    2023-01-30
    之旅 开始了 正式
  • Python全栈之路系列之字符串格式化
    This PEP proposes a new system for built-in string formatting operations, intended as a replacement for the existing '%...
    99+
    2023-01-31
    之路 字符串 系列之
  • Python全栈开发之---mysql数
    1、数据库的安装和连接 1 #数据库安装 2 pip install PyMySQL 3 4 #数据库操作 5 import pymysql 6 7 db = pymysql.connect("数据库ip","用户",...
    99+
    2023-01-30
    Python mysql
  • Python正则表达re模块之findall()函数详解
    一、re.findall函数介绍 它在re.py中有定义: def findall(pattern, string, flags=0): """Return a list o...
    99+
    2022-11-11
  • 3Python全栈之路系列之字符串数据类
    字符串(str)字符串类型是python的序列类型,他的本质就是字符序列,而且python的字符串类型是不可以改变的,你无法将原字符串进行修改,但是可以将字符串的一部分复制到新的字符串中,来达到相同的修改效果。创建字符串类型可以使用单引号或...
    99+
    2023-01-31
    之路 字符串 数据
  • Python正则函数怎么使用
    这篇文章主要介绍“Python正则函数怎么使用”,在日常操作中,相信很多人在Python正则函数怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python正则函数怎么使用”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-21
  • 2Python全栈之路系列之MysQl基本数据类型
    Python全栈之路系列之MySQL基本数据类型MySQL中定义数据字段的类型对你数据库的优化是非常重要的。MySQL支持多种类型,大致可以分为三类:数字类型日期和时间类型字符串类型数字类型类型大小用途BI...
    99+
    2022-10-18
  • Python全栈之基本数据类型
    目录1. number类型1.1 int整型1.2 float浮点型(小数)1.3 bool布尔型1.4 复数类型2. 字符串类型3. 列表_元组_字符串3.1 列表类型3.2 元组...
    99+
    2022-11-12
  • Python正则表达re模块之findall()函数怎么使用
    这篇文章主要介绍“Python正则表达re模块之findall()函数怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python正则表达re模块之findall()函数怎么使用”文章能帮助大...
    99+
    2023-07-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作