蓝桥杯-网络安全比赛(2)基础学习-正则表达式匹配电话号码、HTTP网址、IP地址、密码校验

news2024/9/30 17:31:58
正则表达式(Regular Expression):
	定义:一种强大的文本处理工具,用于描述、匹配和查找字符串中的特定模式。
	应用:密码验证、文本搜索和替换、数据清洗等。
	特点:通过特定的元字符和规则来构建复杂的模式匹配表达式。
字符串处理:
	定义:对文本数据(字符串)进行操作和分析的过程。
	技术:包括字符串的拼接、分割、查找、替换等。
	关系:正则表达式常常用于实现高效的字符串处理。
编程语言:
	定义:用于编写计算机程序的工具,如Python、Java、PHP等。
	作用:提供语法规则、数据结构和算法库,用于实现各种功能。
	关系:正则表达式通常在编程语言中作为内置功能或库来使用,以进行模式匹配和文本处理。

regex

在蓝桥杯的网络安全竞赛中,正则表达式发挥着不可或缺的作用。
网络安全比赛通常涉及到对网络安全漏洞的挖掘、分析和利用,其中很多环节都需要对大量的日志数据、代码片段或网络流量进行分析。
而正则表达式正是处理这些文本数据的利器。

具体来说,正则表达式在网络安全比赛中的重要性体现在以下几个方面:

  • 日志分析:在网络安全比赛中,参赛者经常需要分析系统或应用的日志文件,以查找潜在的攻击痕迹或异常行为。通过编写合适的正则表达式,参赛者可以快速定位到关键信息,提高分析效率。
  • 代码审计:在代码审计环节,参赛者需要查找源代码中可能存在的安全漏洞。正则表达式可以帮助参赛者快速定位到特定的代码模式或函数调用,从而发现潜在的安全风险。
  • 网络流量分析:在网络安全比赛中,参赛者有时需要分析网络流量数据,以识别恶意流量或攻击行为。正则表达式可以帮助参赛者从大量的网络数据包中提取出关键信息,如特定的协议字段、IP地址或端口号等。

此外,正则表达式还可以用于编写自动化脚本、构建安全工具等方面,为参赛者在网络安全比赛中提供强大的技术支持。

正则表达式提供了强大的模式匹配能力,使得字符串处理变得更加高效和灵活。 例如,你可以使用正则表达式来查找和替换字符串中的特定模式。
编程语言通常提供对正则表达式的支持,使得开发者能够在程序中方便地使用正则表达式来处理文本数据。
不同的编程语言可能有不同的语法和函数来调用和使用正则表达式。

接下来让我们从四个正则的题目,学习一下正则表达式基本用法。

一、电话号码

编写一个正则表达式,用于匹配以1开头的11位数字组成的电话号码。
^1\d{10}$
  • ^ 表示字符串的开始。
  • 1 匹配数字1。
  • \d{10} 匹配10个数字。
  • $ 表示字符串的结束。

二、HTTP网址

这个题目要求你构建一个正则表达式,能够识别并匹配大多数常见的URL结构。
一个基本的URL通常包括协议头(如http://或https://),域名(由子域名、主域名和顶级域名组成),以及可能存在的路径和查询参数。
注意,这个题目要求的是匹配“基本的”URL格式,因此不需要考虑所有可能的URL变种或特殊情况。

题目:编写一个正则表达式,用于匹配基本的URL格式。

^(https?:\/\/)?([\da-z.-]+)\.([a-z.-]{2,6})([\/\w .-]*)*\/?

regular expression

  1. ^:表示字符串的开始。

  2. (https?:\/\/)?

    • https?:匹配"http"或"https"。
    • :\/\/:匹配://
    • ?:表示前面的整个组(https?:\/\/)是可选的。
  3. ([\da-z.-]+)
    这部分用于匹配URL中的子域名部分,例如"www"或"subdomain"。

    • [\da-z.-]:匹配一个数字、字母、点号或短横线。
    • +:表示前面的字符集可以出现一次或多次。
  4. \.:匹配点号(.),在正则表达式中点号是一个特殊字符,所以需要使用反斜杠进行转义。

  5. ([a-z.]{2,6})
    这部分用于匹配顶级域名(TLD),如".com"、".org"等。

    • [a-z.]:匹配一个小写字母或点号。
    • {2,6}:表示前面的字符集可以出现2到6次。
  6. ([\/\w .-]*)*

    • [\/\w .-]:匹配斜杠(/)、单词字符(等同于[a-zA-Z0-9_])、点号、短横线。
    • *:表示前面的字符集可以出现0次或多次。
      外层的*表示前面的整个组([\/\w .-]*)可以出现0次或多次。
      这部分用于匹配URL中的路径和参数部分。
  7. \/?:匹配0个或1个斜杠。

这个正则表达式能够匹配大多数基本的URL格式,但它并不是完全严格的,因为URL的格式非常复杂,有很多特殊情况需要考虑。

三、IP地址

这个题目要求你编写一个能够精确匹配IPv4地址格式的正则表达式。
IPv4地址由四个数字段组成,每个数字段的值在0到255之间,段与段之间用点号(.)分隔。
正则表达式需要确保每个数字段都符合这个范围要求,并且整个地址的格式正确无误。

题目:编写一个正则表达式,用于匹配IPv4地址。

^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$

Capturing Group

  1. ^:表示字符串的开始。
  2. ((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.)
    • 这是一个分组,用于匹配IP地址中的一个段(0-255)。
    • 25[0-5]:匹配250到255。
    • 2[0-4][0-9]:匹配200到249。
    • [01]?[0-9][0-9]?:匹配0到199,其中[01]?表示0或1出现0次或1次,[0-9][0-9]?表示一个数字后面可以跟一个可选的数字。
    • \.:匹配点号(.)。
  3. {3}:表示前面的整个组(一个IP段和点号)重复3次,即匹配前三段IP地址。
  4. (25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?):再次匹配IP地址中的一个段(0-255),但这次没有点号,因为这是在匹配最后一个段。
  5. $:表示字符串的结束。

这个正则表达式精确地匹配IPv4地址的格式,确保每个段都在0到255的范围内。

四、密码

密码的长度必须至少为8个字符。
密码中必须包含至少一个大写字母(A-Z)。
密码中必须包含至少一个小写字母(a-z)。
密码中必须包含至少一个数字(0-9)。
密码中必须包含至少一个特殊符号。(如!@#$%^&*._等)

题目:校验密码,必须是包含大小写字母、数字、特殊符号的8位以上组合

零宽断言在正则表达式中起着非常关键的作用,它们用于匹配某些位置,但并不消耗字符,也就是说,它们不改变匹配位置,只是用来检查某个条件是否满足。

正向先行断言:语法为(?=pattern),它表示字符串中的一个位置,紧接该位置之后的字符序列能够匹配pattern。这种断言通常用于确保某个模式在特定位置之后存在,但不实际消耗或匹配这些字符。

(?=.*\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[\W_]).{8,}$

positive lookahead

  1. ^:匹配字符串的开始位置。
  2. (?=.*[a-z]):正向先行断言(positive lookahead),确保至少有一个小写字母存在。
    • (?=...):表示一个正向先行断言,它会在当前位置尝试匹配括号内的正则表达式,但不会消耗任何字符,也就是说,匹配成功后,会回到原来的位置继续后面的匹配。
    • .*:匹配任意数量的任意字符(换行符除外)。
    • [a-z]:匹配任意小写字母。
  3. (?=.*[A-Z]):正向先行断言,确保至少有一个大写字母存在。
    • [A-Z]:匹配任意大写字母。
  4. (?=.*\d):正向先行断言,确保至少有一个数字存在。
    • \d:匹配任意数字。
  5. (?=.*\W_):正向先行断言,确保至少有一个特殊符号存在。
    • \W_:匹配题目中任意特殊符号。
  6. .{8,}:匹配任意字符(换行符除外)至少8次。
    • .:匹配任意字符(除了换行符)。
    • {8,}:表示前面的元素(.)至少出现8次。
  7. $:匹配字符串的结束位置。

零宽断言除了正向先行断言之外,还包括以下三种:

负向先行断言:语法为(?!pattern),它表示字符串中的一个位置,紧接该位置之后的字符序列不能匹配pattern。这种断言用于排除某些模式在特定位置之后出现的可能性。

正向后行断言:语法为(?<=pattern),它表示字符串中的一个位置,紧接该位置之前的字符序列能够匹配pattern。这种断言用于确保某个模式在特定位置之前存在。

负向后行断言:语法为(?<!pattern),它表示字符串中的一个位置,紧接该位置之前的字符序列不能匹配pattern。这种断言用于排除某些模式在特定位置之前出现的可能性。

结语

1. 正则表达式基础
	字符集:使用[]来定义一组字符,匹配其中的任意一个字符。
	元字符:具有特殊含义的字符,如.表示任意字符,*表示前面的元素出现0次或多次。
	转义字符:使用\来转义特殊字符,使其失去特殊含义。
2. 边界匹配
	^:匹配字符串的开始位置。
	$:匹配字符串的结束位置。
3. 量词
	*:匹配前面的元素0次或多次。
	+:匹配前面的元素1次或多次。
	?:匹配前面的元素0次或1次。
	{n}:匹配前面的元素恰好n次。
4. 分组与捕获
	():用于分组,也可以捕获匹配的子串。

regex learn
通过这次的学习,你已经掌握了正则表达式的基础知识,并了解了如何应用它们来解决实际问题。正则表达式的功能非常强大,但也需要一定的实践和经验来熟练掌握。建议你在实际项目中多使用正则表达式,通过实践来加深理解和提高应用能力。

思考:如何用正则的零宽断言获取小米商店的HTTPS链接?后面的参数?(如https://www.mi.com/shop/buy/detail?product_id=10050036)

学习地址:https://regexone.com/
这类网站上也会提供很多案例,比如查找给定文本等等,可以更好地学习正则。

练习地址:https://regex101.com/
只需要输入匹配的语法公式,便可以查询出对应的文本,文本会自动高亮显示。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1550138.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

07_Response

文章目录 案例&#xff08;请求分发案例&#xff09; Response响应行响应头响应体特殊响应头refreshContent-typeContent-dispositionlocation 案例&#xff08;登录案例&#xff09; 案例&#xff08;请求分发案例&#xff09; 场景&#xff1a;有多个请求 Http://localhost:…

【检索稳定|火爆征稿中】2024年企业管理与数字化经济国际学术会议(ICBMDE 2024)

【检索稳定|火爆征稿中】2024年企业管理与数字化经济国际学术会议&#xff08;ICBMDE 2024&#xff09; 2024 International Conference on Business Management and Digital Economy&#xff08;ICBMDE 2024&#xff09; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~…

6_相机坐标系_相机4个坐标系详述

相机系列文章是用来记录使用opencv3来完成单目相机和6轴机械臂手眼标定。本人吃饭的主职是linux下6轴机械臂相关应用开发。但对于机械臂运动学、相机应用等都非常感兴趣&#xff0c;所以对一些线性代数基础薄弱又想深入了解机械臂内部运算的同志比较有体会。由于是探索性学习&a…

基于Spring Boot的在线学习系统的设计与实现

基于Spring Boot的在线学习系统的设计与实现 摘 要 在线学习系统是以大学传统线下教学方式不适应信息技术的迅速发展为背景&#xff0c;提高学习效率&#xff0c;解决传统教学问题&#xff0c;并且高效的实现教学信息化的一款软件系统。为了更好的实现对于教学和学生的管理&a…

Dockerfile:自定义镜像

Dockerfile 是一个文本文件&#xff0c;其中包含了一系列用于自动化构建Docker镜像的指令。通过编写Dockerfile&#xff0c;开发者能够明确地定义一个软件应用及其运行环境应该如何被封装进一个可移植、可重复构建的Docker镜像中。 第一步&#xff1a;在/tmp文件下新建docker…

使用itext-core生成PDF

1、添加引用依赖包 <dependency><groupId>com.itextpdf</groupId><artifactId>itext-core</artifactId><version>8.0.3</version><type>pom</type></dependency> 2、上代码 package com.student.demo.pdf;impor…

CUDA版本支持的pytorch版本

PyTorch 1.0.x - 支持 CUDA 7.5 PyTorch 1.1.x - 支持 CUDA 8.0 PyTorch 1.2.x - 支持 CUDA 9.0 PyTorch 1.3.x - 支持 CUDA 9.2 PyTorch 1.4.x - 支持 CUDA 10.1 PyTorch 1.5.x - 支持 CUDA 10.2 PyTorch 1.6.x - 支持 CUDA 11.0 PyTorch 1.7.x - 支持 CUDA 11.0/11.1 PyTorch…

数字身份的革命:解锁 Web3 的身份验证技术

引言 随着数字化时代的到来&#xff0c;个人身份认证成为了日常生活和商业活动中不可或缺的一部分。传统的身份验证方式存在着安全性低、易伪造、不便利等问题&#xff0c;因此&#xff0c;人们迫切需要一种更安全、更便捷的身份验证技术。在这样的背景下&#xff0c;Web3的身…

【C语言】Infiniband驱动init_dev_assign函数

一、注释 一个内核模块的初始化函数&#xff0c;用于分配和初始化某些资源。以下是对代码块的逐行中文注释&#xff1a; // 定义一个初始化设备分配的函数 static void init_dev_assign(void) {int i 1;spin_lock_init(&dev_num_str_lock); // 初始化自旋锁if (mlx4_fil…

超级会员卡积分收银系统源码:积分+收银+商城三合一小程序 带完整的安装代码包以及搭建教程

信息技术的迅猛发展&#xff0c;移动支付和线上购物已经成为现代人生活的常态。在这样的背景下&#xff0c;商家对于能够整合收银、积分管理和在线商城的综合性系统的需求日益强烈。下面&#xff0c;罗峰给大家分享一款超级会员卡积分收银系统源码&#xff0c;它集积分、收银、…

pyecharts操作一

pyecharts 是一个用于生成Echarts图表的Python库。Echarts是百度开源的一个数据可视化JS库&#xff0c;可以生成一些非常酷炫的图表。 环境安装 pip install pyecharts 检查版本 import pyecharts print(pyecharts.version) 2.0.3 柱状图绘制 from pyecharts.charts impor…

通过Jmeter准备压测数据-mysql示例

1、新建线程组 总共30万条数据 2、创建jdbc链接 创建jdbc连接配置 配置mysql连接 需要在jmeter安装的路径\apache-jmeter-5.6.3\lib\ext 目录下添加mysql 驱动 3、创建jdbc请求 jdbc链接名称需要与上一步中的保持一致&#xff0c;同时添加insert语句 例如 INSERT INTO test…

【tingsboard开源平台】下载数据库,IDEA编译,项目登录

一&#xff0c; PostgreSQL 下载 需要看官网的&#xff1a;点此下载直达地址&#xff1a;点此进行相关学习&#xff1a;PostgreSQL 菜鸟教程 二&#xff0c;PostgreSQL 安装 点击安装包进行安装 出现乱码错误&#xff1a; There has been an error. Error running C:\Wind…

macos下 jupyter服务安装和vscode链接密码设置 .ipynb文件

最近收到了一些后缀为.ipynb的文件&#xff0c; 这个文件就是使用jupyter编辑的&#xff0c;于是就需要安装一个jupyter服务&#xff0c; 对于最新版本的jupyter 网上很多的资料都已经过期了&#xff0c;这里以最新版本的jupyter为例。 jupyter lab安装 jupyter 这个工具包含…

HBase的Python API操作(happybase)

一、Windows下安装Python库&#xff1a;happyhbase pip install happybase -i https://pypi.tuna.tsinghua.edu.cn/simple 二、 开启HBase的Thrift服务 想要使用Python API连接HBase&#xff0c;需要开启HBase的Thrift服务。所以&#xff0c;在Linux服务器上&#xff0c;执行…

Adobe推出20多个,企业版生成式AI定制、微调服务

3月27日&#xff0c;全球多媒体领导者Adobe在拉斯维加斯召开“Summit 2024”大会&#xff0c;重磅推出了Firefly Services。 Firefly Services提供了20 多个生成式AI和创意API服务&#xff0c;支持企业自有数据对模型进行定制、微调&#xff0c;同时可以与PS、Illustrator、Ex…

循序渐进丨MogDB 对 Oracle DBLink兼容性增强

本特性自 MogDB 5.0.0版本开始引入&#xff0c;支持 Oracle DBLink语法&#xff0c;可以使用符号访问 Oracle 数据库中的表。 示 例 01 环境准备 MogDB 环境 已安装 MogDB 数据库。已安装oracle_fdw插件&#xff0c;具体安装方法参见oracle_fdw安装文档https://docs.mogdb.io/…

Spring boot2.X 配置https

背景 最近项目组说要将 http 升级成 https 访问&#xff0c;证书也给到我们这边了&#xff0c;当然我们这边用的是个二级域名&#xff0c;采用的是通配符访问的方式&#xff0c;比如一级域名是这样&#xff08;com.chinaunicom.cn&#xff09;&#xff0c;我们的则是&#xff0…

论文笔记:Retrieval-Augmented Generation forAI-Generated Content: A Survey

北大202402的RAG综述 1 intro 1.1 AICG 近年来&#xff0c;人们对人工智能生成内容&#xff08;AIGC&#xff09;的兴趣激增。各种内容生成工具已经精心设计&#xff0c;用于生产各种模态下的多样化对象 文本&代码&#xff1a;大型语言模型&#xff08;LLM&#xff09;…

第十一章:位运算符与位运算

文章目录 第十一章&#xff1a;位运算符与位运算1.按位与运算&#xff1a;&2.按位或运算&#xff1a;|3.按位异或运算&#xff1a;^4.取反运算符&#xff1a;~5.左移运算符&#xff1a;<<6.右移运算符&#xff1a;>>总结 第十一章&#xff1a;位运算符与位运算…