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

正则表达式(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.mzph.cn/news/775089.shtml

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

相关文章

逆向案例9--小鹅通视频m3u8内容解密--含简单webpack

视频网址&#xff1a;https://app4nseessp8638.h5.xiaoeknow.com/v2/course/alive/l_65b9e8dfe4b064a83b90e102?type2&app_idapp4nseessp8638&channel_id&res_type4&pro_id&res_idl_65b9e8dfe4b064a83b90e102 按照惯例&#xff0c;刷新网站&#xff0c;搜…

23种设计模式之创建型模式 - 单例模式

文章目录 一、单例模式1.1单例模式定义1.2 单例模式的特点 二、实现单例模式的方式2.1 饿汉式2.2 懒汉式2.3 双重检查锁&#xff1a;2.4 静态内部类2.5 枚举实现&#xff08;防止反射攻击&#xff09;&#xff1a; 一、单例模式 1.1单例模式定义 单例模式确保系统中某个类只有…

蓝桥杯刷题之路径之谜

题目来源 路径之谜 不愧是国赛的题目 题意 题目中会给你两个数组&#xff0c;我这里是分别用row和col来表示 每走一步&#xff0c;往左边和上边射一箭&#xff0c;走到终点的时候row数组和col数组中的值必须全部等于0这个注意哈&#xff0c;看题目看了半天&#xff0c;因为…

libVLC 视频抓图

Windows操作系统提供了多种便捷的截图方式&#xff0c;常见的有以下几种&#xff1a; 全屏截图&#xff1a;通过按下PrtSc键&#xff08;Print Screen&#xff09;&#xff0c;可以截取整个屏幕的内容。截取的图像会保存在剪贴板中&#xff0c;可以通过CtrlV粘贴到图片编辑工具…

vivado 使用远程主机和计算群集

使用远程主机和计算群集 概述 AMD Vivado™集成设计环境&#xff08;IDE&#xff09;支持同时并行合成和实现的执行在多个Linux主机上运行。你可以做到这一点通过配置单个主机或指定要在其上启动作业的命令手动执行现有的计算集群。目前&#xff0c;Linux是Vivado唯一支持远程主…

【Ollama】AI大模型本地部署

Ollama Ollama轻量级、可扩展的框架&#xff0c;用于在本地机器上构建和运行大型语言模型&#xff08;LLM&#xff09;。提供了一个简单的API来创建、运行和管理模型&#xff0c;以及一个预构建模型库&#xff0c;可以轻松用于各种应用程序。 明显优势&#xff1a;易于使用、…

python Flask扩展:如何查找高效开发的第三方模块(库/插件)

如何找到扩展以及使用扩展的文档 一、背景二、如何寻找框架的扩展&#xff1f;三、找到想要的扩展四、找到使用扩展的文档五、项目中实战扩展 一、背景 刚入门python的flask的框架&#xff0c;跟着文档学习了一些以后&#xff0c;想着其实在项目开发中&#xff0c;经常会用到发…

Python字符串操作

1.len(返回字符串的长度): text "Hello, world!" print(len(text)) # Output: 132.find(查找字符串在某字符串中是否包含): text "Hello, world!" print(text.find("world")) # Output: 7 3.index(查找字符串在某字符串中是否包含): tex…

图书推荐|Django+Vue.js商城项目实战

一线资深架构师 凝聚近十年大型系统开发经验 倾力打造 双色印刷 适合&#xff1a;项目演练求职应聘技术提升 全新&#xff1a;Django 4.x与Vue.js 3.x全栈技术 易学&#xff1a;娓娓道来图示指引原理剖析步骤解说代码详注 真实企业级项目技术细节完整揭秘&#xff0c;照着做就…

【JavaWeb】Day23.maven——依赖管理

依赖管理 一.依赖配置 依赖&#xff1a;指当前项目运行所需要的jar包。一个项目中可以引入多个依赖。 例如&#xff1a;在当前工程中&#xff0c;我们需要用到logback来记录日志&#xff0c;此时就可以在maven工程的pom.xml文件中&#xff0c;引入logback的依赖。具体步骤如…

开源大数据集群部署(十八)Hive 安装部署

作者&#xff1a;櫰木 1 创建hive Kerberos主体 bash /root/bigdata/getkeytabs.sh /etc/security/keytab/hive.keytab hive2 安装 在hd1.dtstack.com主机root权限下操作&#xff1a; 解压包 [roothd3.dtstack.com software]# tar -zxvf apache-hive-3.1.2-bin.tar.gz -C …

WPF 命名空间解释

在C#中有命名空间的概念&#xff0c;我们可以使用using引入&#xff0c;就可以使用其中的类&#xff0c;在xaml中&#xff0c;也同样有命名空间&#xff0c;在window标签中用xmlns声明的这几行&#xff0c;这就是本页面引入的命名空间。 一般的情况下&#xff0c;我们引入命名空…

钡铼技术R40工业4G路由器为户外广告牌智能控制系统提供无线网络

钡铼技术R40工业4G路由器在户外广告牌智能控制系统中的应用&#xff0c;为广告行业带来了革命性的变革。作为一种先进的无线通信设备&#xff0c;R40工业4G路由器通过其稳定的信号传输和强大的网络连接能力&#xff0c;为户外广告牌的智能控制系统提供了可靠的无线网络支持&…

汇编语言学习记录 01

目录 VScode配置调试环境 Debug的主要命令 简单写个Hello World VScode配置调试环境 没有IDE真的蛮难受的 安装插件TASM/MASM 右键扩展设置&#xff0c;选择Assembler&#xff1a;MASM 右键调试即可开始 Debug的主要命令 R-查看和修改寄存器 D-查看内存单元 E-修改内…

docker学习笔记 四-----docker基本使用方法

基础命令奉上&#xff1a; 1、docker命令查询方法 docker --help 获取docker命令帮助 docker search --help 查询docker 子命令search的帮助 2、查询镜像 查询镜像 docker search 192.168.206.100:5000/mysql 查询指定服务器指定镜像 docker search mysql …

树与二叉树的应用试题解析

01&#xff0e;在有n个叶结点的哈夫曼树中&#xff0c;非叶结点的总数是( A ). A. n-1 B. n C. 2n-1 D.2n 02.给定整数集合{3,5,6,9,12}&#xff0c;与之对应的哈夫曼树是( D…

OpenCV模块熟悉:点云处理相关

1. 显示--VIZ 曾经基于PCL 做过不少点云相关的开发&#xff0c;采样VTK进行有点云显示。后来基于OpenCV做了不少三维重建工作&#xff0c;总是将点云保存下来&#xff0c;然后借助CloudCompare等查看结果。如果能够将VIZ编译进来&#xff0c;预计会提升开发速度。 …

队列+宽搜例题讲解!

429. N 叉树的层序遍历 题目解析&#xff1a; 根据题目分析&#xff0c;可以看出题目要我们求的是N叉数的层序遍历&#xff0c;就是把每层的放在一块&#xff0c;最后把每层都输出出来即可&#xff01; 算法分析&#xff1a; 我们可以利用队列先进先出的特性进行求解&#x…

Machine Learning机器学习之K近邻算法(K-Nearest Neighbors,KNN)

目录 前言 背景介绍&#xff1a; 思想&#xff1a; 原理&#xff1a; KNN算法关键问题 一、构建KNN算法 总结&#xff1a; 博主介绍&#xff1a;✌专注于前后端、机器学习、人工智能应用领域开发的优质创作者、秉着互联网精神开源贡献精神&#xff0c;答疑解惑、坚持优质作品共…

基于大语言模型的云故障根因分析|顶会EuroSys24论文

*马明华 微软主管研究员 2021年CCF国际AIOps挑战赛程序委员会主席&#xff08;第四届&#xff09; 2021年博士毕业于清华大学&#xff0c;2020年在佐治亚理工学院做访问学者。主要研究方向是智能运维&#xff08;AIOps&#xff09;、软件可靠性。近年来在ICSE、FSE、ATC、EuroS…