python-网络安全编程第三天(正则表达式)

2023-10-27

 

python 正则表达式

正则表达式本身是一种小型的、高度专业化的编程语言,而在python中,通过内嵌集成re模块,程序媛们可以直接调用来实现正则匹配。正则表达式模式被编译成一系列的字节码,然后由用C编写的匹配引擎执行。

用法

match()

re.match()尝试从字符串的其实位置匹配一个模式匹配失败返回none
语法:re.match(pattern,string,flags=00)
pattern 匹配的正则表达式
string 要匹配的字符串
flags 标志位,控制正则表达式的匹配方式

1 import re
2 #在起始位置匹配
3 print(re.match('www','www.baidu.com').span())
4 #不再起始位匹配
5 print(re.match('com','www.baidu.com'))

group(num=0)匹配整个表达式的字符串
groups() 返回一个包含所有小组字符串的元组

 1 #!/usr/bin/python
 2 import re
 3 line = "Cats are smarter than dogs"
 4 matchObj = re.match( r'(.*) are (.*?) .*', line, re.M|re.I)
 5 if matchObj:
 6    print "matchObj.group() : ", matchObj.group()
 7    print "matchObj.group(1) : ", matchObj.group(1)
 8    print "matchObj.group(2) : ", matchObj.group(2)
 9 else:
10    print "No match!!

re.search()

re.search()方法扫描整个字符串并返回第一个成功的匹配
函数语法:re.search(pattern,string,flags=0)
剩下和上面的re.match用法一致

re.match与re.search的区别
re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。

compile()
compile()编译正则表达式模式,返回一个对象模式
格式:re.compile(pattern,flags=0)
pattern:一个字符串形式的正则表达式
flags:可选
re.I 忽略大小写
re.L 表示特殊字符集 \w, \W, \b, \B, \s, \S 依赖于当前环境
re.M 多行模式
re.S 即为 . 并且包括换行符在内的任意字符(. 不包括换行符)
re.U 表示特殊字符集 \w, \W, \b, \B, \d, \D, \s, \S 依赖于 Unicode 字符属性数据库
re.X 为了增加可读性,忽略空格和 # 后面的注释

1 import re
2 tt = "Tina is a good girl, she is cool, clever, and so on..."
3 rr = re.compile(r'\w*oo\w*')
4 print(rr.findall(tt))   #查找所有包含'oo'的单词
5 执行结果如下:
6 ['good', 'cool']


findall()
re.findall遍历匹配,可以获取字符串中所有匹配的字符串,返回一个列表。
格式:re.findall(pattern, string, flags=0)
eg:

1 import re
2 p = re.compile(r'\d+')
3 print(p.findall('xiaohua2020jintian1yue9ri'))
4 
5 #执行结果:['2020', '1', '9']

 


finditer()
搜索string,返回一个顺序访问每一个匹配结果(Match对象)的迭代器。

split()
按照能够匹配的字串将string分割后返回列表
格式:re.split(pattern,string[,maxsplit])
eg:

1 #按照/d+来匹配分割
2 import re
3 print(re.split('\d+','xiaohuadawang123huahua2020 niubi'))
4 #代码执行结果:['xiaohuadawang', 'huahua', ' niubi']

 

sub()
使用re替换string中每一个匹配的子串后返回替换后的字符串
re.sub(pattern,repl,string,count)
eg:

1 #\s+匹配 空格部分替换成-
2 import re
3 text="xiaohuadawang from yulinxueyuan xinxianquanxiehui"
4 print(re.sub(r'\s+','-',text))
5 #代码执行结果:
6 #xiaohuadawang-from-yulinxueyuan-xinxianquanxiehui

subn()
返回替换次数
格式:subn(pattern, repl, string, count=0, flags=0)

正则表达式对象
start()返回匹配开始的位置
end返回匹配结束的位置
span()返回一个元组包含匹配(开始,结束)的位置

简单应用

import requests
import re

url='http://jandan.net/pic/MjAyMDAxMjAtMTM4#comments'
headers={}

r=requests.get(url=url)

imgs=re.findall('<img src="(.*?)" /></p>',r.content)

print(imgs)
for img in imgs:
    print(img)

参考学习:
https://www.cnblogs.com/tina-python/p/5508402.html
https://www.runoob.com/python/python-reg-expressions.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python-网络安全编程第三天(正则表达式) 的相关文章

  • 数据库连接池自动重新连接问题

    http sailorls blogchina com 2606862 html tomcat连接池自动重新连接问题 Tag Tag tomcat 连接池 重新连接 在以往的开发中 常常遇到tomcat连接池断掉后 比如网络断线 无法自动重
  • 知识图谱02:知识图谱的应用

    公众号 数据挖掘与机器学习笔记 知识图谱提供了一种更好的组织 管理和理解互联网信息的能力 可用于语义搜索 智能问答 个性化推荐等 在社交和电子商务等领域中实现价值 基于知识图谱的应用是信息领域当前的研究热点 也是促进人工智能发展的基础技术之
  • STM32L051测试 (五、串口测试 — 与Enocean模块通讯问题)

    STM32L051测试 第五课 串口的使用 by 矜辰所致 添加目录栏目 2021 9 30 调整文章格式 增加串口接收卡死处理说明 2022 7 18 目录 前言 一 串口接收处理的几种方式 1 1 串口接收发送不定长度的数据 非DMA方
  • 记一次简单的js逆向分析

    背景 朋友让帮忙爬一点数据 用作数据分析来用 网址如下 aHR0cHM6Ly93d3cub2tsaW5rLmNvbS96aC1jbi9idGMvdHgtbGlzdD9saW1pdD0yMCZwYWdlTnVtPTE 分析该网站 1 抓包 该
  • Qt QGraphics导入背景图并绘制图形,画布移动、缩放、图形旋转等

    前言 之前写过一篇博文 Qt鼠标拖动绘制基本几何图形 这是介绍使用QGraphic中利用鼠标事件实现基本几何图形的绘制 支持直线 矩形 圆形 椭圆 本次是在此基础上进行扩展 实现背景图导入 并在图片上进行几何图形绘制 包括矩形 圆形等 支持
  • Python简单实现图书管理系统

    本文章为作者实训内容 简单的图书管理系统 目录 需求分析 项目背景 项目认识 项目简介 管理系统 数据库设计 1 数据库需求分析 2 流程图 3 E R图 系统设计 系统涉及的简要分析 labrary system系统 Labrary bo
  • linux使用什么命令设置进程的优先级,Linux调整进程优先级之nice命令

    1 了解Linux进程调度 进程调度是Linux中非常重要的概念 Linux内核有一套高效复杂的调度机制 能使效率极大化 但有时为了实现特定的要求 需要一定的人工干预 比如如果你想高清电影播放器获取更多的CPU和内存资源 你可以把播放器的优
  • Linux学习笔记——Nginx安装部署

    5 3 Nginx安装部署 5 3 1 简介 Nginx engine x 是一个高性能的HTTP和反向代理Web服务器 同时也提供了IMAP POP3 SMTP服务 同Tomcat一样 Nginx可以托管用户编写的WEB应用程序成为可访问
  • sublime text2 使用技巧总结(一)

    sublime text2是开发代码编辑的神器 编辑器界面优美 操作速度快速 真是出门在外 居家旅行 杀人越货之必备良药 一 在当前项目中 快速搜索文件 1 搜索文件 2 搜索文件小技巧 在输入文件路径的时候 可以 c u a 这样的格式匹
  • 主力吸筹指标及其分析和使用说明

    文章目录 主力吸筹指标 指标代码分析 使用说明 使用配图 主力吸筹指标 VAR1 REF LOW 1 VAR2 SMA MAX LOW VAR1 0 3 1 SMA ABS LOW VAR1 3 1 100 VAR3 EMA VAR2 3
  • 有了这个时尚行业解决方案,轻松实现数字化转型!

    中国消费正面临升级 在这多变的商业发展阶段与多变的商业环境下 消费者愈发追求个性化 产品承载的元素从设计 价值延展到了数据 服务 流量 内容等等 每一家品牌经营者对此非常忧心 有了这套帆软时尚行业解决方案 解决你的烦恼 一 解决方案架构图
  • 梁乾东:4.21黄金走势下跌日内还能起死回升吗?最新黄金原油策略解析

    消息面解析 周二 4月20日 欧洲交易时段 受全球低迷影响 欧股回落 美股期货下跌 风险基调的变化也导致美国国债收益率跌破1 60 美元回吐部分跌幅 重回91关口 现货黄金交投于1770美元附近 本交易日市场关注欧美疫苗接种等地缘政治风险
  • 594. Longest Harmonious Subsequence

    We define a harmonious array is an array where the difference between its maximum value and its minimum value is exactly
  • count(1) count(*) count(列名)的区别

    1 count 1 and count 从执行计划来看 count 1 和count 的效果是一样的 当表的数据量大些时 对表作分析之后 使用count 1 还要比使用count 用时多 当数据量在1W以内时 count 1 会比count
  • 断点续传:大文件分片上传

    有时用户上传下载文件需要历时数小时 万一线路中断 不具备断点续传的方式就只能从头重传 断点续传方式允许用户从上传下载断线的地方继续传送 这样大大减少了用户的烦恼 分片上传 就是将所要上传的文件 按照一定的大小 将整个文件分隔成多个数据块 我
  • Seetaface6的window+vs编译过程

    前言 SeetfaFace6是2020年初开放出来的 因为其效率要比Seetaface2更高 尤其是regonition这块 v2的模型size大概有100MB 而v6提供了light模型 只有4 5MB 所以在跑通seetaface2代码
  • 下采样downsamp和上采样upsample

    图像的上采样 up sampling 和下采样 down sampling 缩小图像 或称为下采样 subsampled 或降采样 downsampled 的主要目的有两个 1 使得图像符合显示区域的大小 2生成对应图像的缩略图 放大图像
  • epoch如何设置_最易懂的方式介绍 神经网络模型中的Epoch、Iteration、Batchsize

    本文以最直白的方式介绍了神经网络中经常遇到的而且容易混淆的三个名词 一共1162个字 全部学习一遍大约需要6分钟 batchsize 简单点说 就是我们一次要将多少个数据扔进模型去训练 这个值介于1和训练样本总个数之间 batchsize太
  • python-docx在书签后追加段落内容

    python docx的官方文档 https python docx readthedocs io en latest 示例代码 比如文档 测试1 docx 的内容如下 想要在 书签a 的下面追加一些内容时 可以使用如下方法 from do
  • Linux Bash及Vim常用命令

    本人算是Linux菜鸟一个 只用到一些很基础的命令 在此记录一下 Bash 快捷键 命令 说明 ctrl a 移到命令行首 ctrl e 移到命令行尾 ctrl f 按字符右移 ctrl b 按字符左移 ctrl u 从光标处 不包含 删除

随机推荐

  • matlab停止运行命令_MATLAB的运行与窗口介绍

    1 首先打开MATLAB软件 MATLAB在安装中如果没有选择在桌面生成快捷方式 则需要去安装目录下自己查找 具体路径如下图 2 运行MATLAB 运行MATLAB软件 打开后界面如下图所示 此为MATLAB软件的主界面 主要分为上图中的6
  • Servlet学习日记(二)——405错误解决及各种http状态码总结

    错误显示 HTTP Status 405 HTTP method GET is not supported by this URL type Status report message HTTP method GET is not supp
  • 深度学习驱动的点击率预测:探索梯度提升的力量

    目录 引言 深度学习在点击率预测中的应用 使用Python进行点击率预测 准备数据集
  • 各领域数据集

    https blog csdn net wangqingbaidu article details 80635618 25个常用的深度学习开源数据集 https blog csdn net qq 24305433 article detai
  • JSON.parseObject(String param)与JSONObject.parseObject(String param)的区别

    1 fastjson JSON与JSONObject都是alibaba开源的项目fastjson中的类 关于fastjson 一个由JAVA开发的JSON解析器和生成器 2 parseObject String param parseObj
  • 【Unity&UGUI】输入框代码控制InputField,并显示输入文本

    using System Collections using System Collections Generic using UnityEngine using UnityEngine UI 使用 该引用 才能获得 Text 组件 pub
  • java的println、print与printf

    在java中 System out println 是我们经常会用到的一个语法 它的作用是将值输出显示在console窗口中 这样程序员就可以在console窗口中看到代码运行的结果 而除了System out println 之外 还有其
  • error C2181: illegal else without matching if

    问题代码 include
  • Ubuntu环境下配置Tomcat开机自动启动

    背景 项目部署好后 每次重启虚拟机后 需手动启动Tomcat 为了减少重复操作 特研究怎么设置Tomcat开机自动启动 实践了几种方法 下边的方法靠谱有效 以供参考 检查安装环境配置路径 JDK根目录 usr lib jvm java 1
  • Pandas提速与时间序列处理

    Pandas提速与时间序列处理 在数据分析和处理的领域中 Pandas是一个强大而受欢迎的Python库 它为我们提供了高效的数据结构和数据分析工具 可以轻松处理大规模数据集 本文将重点介绍如何通过优化Pandas代码来提高运算效率 并展示
  • Nginx的配置大全(经测试可用)

    文章目录 一 Nginx下载安装 二 Nginx启动 三 Nginx配置 四 Nginx日志管理 五 Nginx实现视频点播 六 Nginx实现直播 七 Nginx实现视频回放 八 Nginx实现负载均衡 九 Nginx实现IP黑名单 十
  • 软件工程概述-架构师(三)

    软件工程概述 老版 软件开发生命周期 软件定义时期 包括 可行性研究和详细需求分析过程 任务是软件工程必需完成的目标 具有可行问题分析 可行性研究 需求分析等 软件开发时期 软件的 设计与实现 可分为概要设计 详细设计 编码 测试等 软件运
  • Ler(一) stdlib.h,stdio.h,string.h头文件

    一 定位不同 1 stdlib h是standard library标准库头文件 定位在通用工具函数 2 stdio h是standard input output标准输入输出头文件 定位在标准的输入输出工具函数 二 封装函数不同 1 st
  • kitti中stereo的disparity的gt数据的读取和使用

    首先 kitti中disparity的gt的值是uint16的 https blog csdn net chenxicx1992 article details 44784559 这个博客是讲解如何读取存储的是uint16型数据的图片 我也
  • ETCD 详解

    一 ETCD简介 etcd是一个Go言编写的分布式 高可用的一致性键值存储系统 用于提供可靠的分布式键值存储 配置共享和服务发现等功能 具有以下特点 简单 易使用 基于HTTP JSON的API让你用curl就可以轻松使用 易部署 使用Go
  • JSON详解

    JSON的全称是 JavaScript Object Notation 意思是JavaScript对象表示法 它是一种基于文本 独立于语言的轻量级数据交换格式 XML也是一种数据交换格式 为什么没有选择XML呢 因为XML虽然可以作为跨平台
  • PC++:矩阵乘法操作

    实验要求 编写矩阵乘法代码实现 并编译执行 对代码进行执行时间分析 比较不同实现的效率差异 实验步骤 1 完成GEMM示例 并修改输入数据大小 首先 建立一个test cpp文件 利用以下代码 来源 https github com pen
  • canvas 画布 arcTo 方法的理解与使用

    参考文档 https codeplayer vip p j7scu arcTo x1 y1 x2 y2 radius x1 y1 理解为端点1 x2 y2 理解为端点2 radius 半径是基于断点2画的一个弧
  • 【uniapp之h5 微信小程序 app 开发项目结构图 思维导图及注意事项】

    uniapp之h5 微信小程序 app 开发项目结构图 思维导图及注意事项
  • python-网络安全编程第三天(正则表达式)

    python 正则表达式 正则表达式本身是一种小型的 高度专业化的编程语言 而在python中 通过内嵌集成re模块 程序媛们可以直接调用来实现正则匹配 正则表达式模式被编译成一系列的字节码 然后由用C编写的匹配引擎执行 用法 match