蓝桥杯-网络安全比赛(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/
只需要输入匹配的语法公式,便可以查询出对应的文本,文本会自动高亮显示。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vcf文件可以用excel打开吗?四种解决方案

vcf文件可以用excel打开吗&#xff1f; 当然可以。 一、VCF文件简介 VCF&#xff08;vCard&#xff09;文件是一种用于存储联系人信息的文件格式。它通常包含姓名、电话号码、电子邮件地址、地址等详细信息。VCF文件在多种设备和操作系统中广泛使用&#xff0c;特别是在电子邮…

2024年【G3锅炉水处理】考试题及G3锅炉水处理考试报名

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 G3锅炉水处理考试题参考答案及G3锅炉水处理考试试题解析是安全生产模拟考试一点通题库老师及G3锅炉水处理操作证已考过的学员汇总&#xff0c;相对有效帮助G3锅炉水处理考试报名学员顺利通过考试。 1、【多选题】锅筒…

【八股】2024春招八股复习笔记2(大数据开发,Java)

【八股】2024春招八股复习笔记2&#xff08;大数据开发&#xff09; 文章目录 1、大数据存储&#xff08;Flume、Hive、HBase、HDFS&#xff09;2、大数据计算&#xff08;MapReduce&#xff0c;Spark、Flink&#xff09;3、大数据集群&#xff08;Yarn、ZooKeeper、kafka&…

部署云原生边缘计算平台kubeedge

文章目录 1、kubeedge架构2、基础服务提供 负载均衡器 metallb2.1、开启ipvc模式中的strictARP2.2、部署metalb2.2.1、创建IP地址池2.2.2、开启二层转发&#xff0c;实现在k8s集群节点外访问2.2.3、测试 3、部署cloudcore3.1、部署cloudcore3.2、修改cloudcore的网络类型 4、部…

二叉树|450.删除二叉搜索树中的节点

力扣题目链接 class Solution { public:TreeNode* deleteNode(TreeNode* root, int key) {if (root nullptr) return root; // 第一种情况&#xff1a;没找到删除的节点&#xff0c;遍历到空节点直接返回了if (root->val key) {// 第二种情况&#xff1a;左右孩子都为空&…

2024年第六届机器人系统与自动化工程国际会议(RSAE 2024)即将召开!

2024年第六届机器人系统与自动化工程国际会议&#xff08;RSAE 2024&#xff09;将于2024年6月21-23日在日本东京召开。RSAE 2024 的主要目标是加强合作&#xff0c;并为院士、专业人士和研究人员提供一个论坛&#xff0c;交流他们的研究成果、创新理念和解决方案&#xff0c;包…

【网络】:数据链路层

数据链路层 一.以太网帧格式二.认识MTU三.ARP协议1.ARP协议的工作流程2.ARP数据报的格式3.ARP欺骗 四.其他重要协议或技术1.DNS2.ICMP协议3.NAT技术&#xff08;重点&#xff09;4.代理服务器 五.一些问题 认识以太网 “以太网” 不是一种具体的网络, 而是一种技术标准; 既包含…

dump文件分析OOM及线程堆栈

OutOfMemoryError (OOM) 如果项目报错&#xff1a; OutOfMemoryError: Java heap space&#xff0c;说明堆内存空间&#xff08;Heap Space&#xff09;中没有足够的空间来分配对象了。 一旦发生 OOM&#xff0c;系统有可能不可用&#xff0c;或者频繁重启。属于非常严重的问题…

聊聊CSS

css 的介绍 学习目标 能够知道css的作用 1. css 的定义 css(Cascading Style Sheet)层叠样式表&#xff0c;它是用来美化页面的一种语言。 没有使用css的效果图 使用css的效果图 2. css 的作用 美化界面, 比如: 设置标签文字大小、颜色、字体加粗等样式。 控制页面布局, 比如…

tensorflow安装以及在Anaconda中安装使用

在遥感领域进行深度学习时&#xff0c;通常使用python进行深度学习&#xff0c;会使用到tensorflow的安装&#xff0c;今天小编就给大家介绍如何在Anaconda中安装tensorflow&#xff01; 下载Anaconda Index of /anaconda/archive/ | 清华大学开源软件镜像站 | Tsinghua Open…

【b站李炎恢】Vue.js Element UI | 十天技能课堂 | 更新中... | 李炎恢

课程地址&#xff1a;【Vue.js Element UI | 十天技能课堂 | 更新中... | 李炎恢】 https://www.bilibili.com/video/BV1U54y127GB/?share_sourcecopy_web&vd_sourceb1cb921b73fe3808550eaf2224d1c155 备注&#xff1a;虽然标题声明还在更新中&#xff0c;但是看一些常用…

netty构建udp服务器以及发送报文到客户端客户端详细案例

目录 一、基于netty创建udp服务端以及对应通道设置关键 二、发送数据 三、netty中的ChannelOption常用参数说明 1、ChannelOption.SO_BACKLOG 2、ChannelOption.SO_REUSEADDR 3、ChannelOption.SO_KEEPALIVE 4、ChannelOption.SO_SNDBUF和ChannelOption.SO_RCVBUF 5、Ch…

任何程序员错过这些宝藏接单平台,都会难过好吗?

财富自由何时才能实现&#xff1f;首先&#xff0c;可以很负责地告诉你&#xff1a;安安心心地当一头牛马肯定是不能&#xff01;兢兢业业十几年&#xff0c;归来仍是马喽。 说实在的&#xff0c;这两年经济下行&#xff0c;互联网红利又日渐褪去。前者既争又抢&#xff0c;后…

【前端学习——js篇】5.事件循环

详细&#xff1a;https://github.com/febobo/web-interview 5.事件循环 js是一种单线程语言&#xff0c;同一时间内只能做一件事情&#xff0c;为了避免单线程阻塞的方法就是事件循环。 在javascript当中&#xff0c;所有的任务都可以分为&#xff1a; 同步任务&#xff1a;按…

【Linux】详解进程终止进程等待

一、页表&&写时拷贝的进一步理解 页表中不仅仅只有虚拟地址到物理地址的映射&#xff0c;还包括了很多选项&#xff0c;其中就包括了映射条目的权限。当我们进程的代码和数据加载到内存并和进程地址空间建立映射关系时&#xff0c;如果数据的内容不允许被修改&#xff…

阿里云服务器多少钱一个月?低至5元1个月

阿里云服务器一个月多少钱&#xff1f;最便宜5元1个月。阿里云轻量应用服务器2核2G3M配置61元一年&#xff0c;折合5元一个月&#xff0c;2核4G服务器30元3个月&#xff0c;2核2G3M带宽服务器99元12个月&#xff0c;轻量应用服务器2核4G4M带宽165元12个月&#xff0c;4核16G服务…

elementui日期时间选择框自定义组件

1.需求场景 业务中需要&#xff0c;日期选择框方便客户对日期的选择&#xff08;比如近5天&#xff0c;本周&#xff0c;本月&#xff0c;本年等等&#xff09;&#xff0c;并按小时展示。 2.组件代码MyDateTimeChange.vue <template><el-date-pickerv-model"…

Rust使用原始字符串字面量实现Regex双引号嵌套双引号正则匹配

rust使用Regex实现正则匹配的时候&#xff0c;如果想实现匹配双引号&#xff0c;就需要使用原始字符串字面量&#xff0c;不然无法使用双引号嵌套的。r#"..."# 就表示原始字符串字面量。 比如使用双引号匹配&#xff1a; use regex::Regex;fn main() {println!(&qu…

c# RichTextbox添加行号

使用另一个RichTextBox放在要添加行号的左边 使用以下代码 //uiRichTextBox1为右侧文本框&#xff0c;uiRichTextBox2为左侧文本框int lineIndex 0;private void uiRichTextBox1_TextChanged(object sender, EventArgs e){if (lineIndex > uiRichTextBox1.Lines.Length){L…

全国地质灾害点shp崩塌滑坡泥石流空间分布地质灾害详查等数据集

地质灾害是指在自然或者人为因素的作用下形成的&#xff0c;对人类生命财产造成的损失、对环境造成破坏的地质作用或地质现象。地质灾害在时间和空间上的分布变化规律&#xff0c;既受制于自然环境&#xff0c;又与人类活动有关&#xff0c;往往是人类与自然界相互作用的结果。…