安全基础 --- 正则表达式

正则表达式是表达文本模式的方法

正则表达式(Regular Expression),简称为正则Regex,是一个用来描述、匹配和操作字符串的工具。

(1)限定字符

限定字符多用于重复匹配次数

常用限定字符:

语法说明

?

上一项是可选的,最多匹配一次。
*前一项将被匹配零次或多次。
+前一项将被匹配一次或多次。
{N}上一项完全匹配N次。
{N,}前一项匹配N次或多次。
{N,M}前一项至少匹配N次,但不超过M次。

(2)元字符

元字符是表示特殊函数的字符,包括以下这些^ $ . [ ] { } - ? * + ( ) | \\

常用元字符:

语法说明
.匹配任何单个字符。
^匹配行首的空字符串;也代表不在列表范围内的字符
$匹配文本行结尾
\b匹配单词的开始或结束(单词边缘的空字符串)
\w匹配字母或数字或下划线或汉字
\s匹配任意空白符
\d匹配一个数字字符。等价于[0-9]。
grep -h '.zip' test.txt
在文件中查找包含正则表达式“.zip”的文本行grep -h '^zip' test.txt
grep -h 'zip$' test.txt
分别在文件中搜索行首和行尾包含“zip”的文本行

(3)反义字符

语法说明
\B匹配不是单词开头或结束的位置
\D匹配一个非数字字符。
\S匹配任何可见字符。
\W匹配任何非单词字符。

(4)字符类

方括号之中的字符,表示可以任意匹配其中的一个。

语法说明
[^x]匹配除了x以外的任意字符
[^aeiou]匹配除了aeiou这几个字母以外的任意字符
grep -h '[bg]zip' test.txt
匹配包含字符串“bzip”或者“gzip”的任意行grep -h '[^bg]zip' test.txt
匹配不以'b'或'g'开头的行-在方括号中表示一个字符区域
grep -h '^[A-Z]' test.txt
匹配以大写字母开头的行grep -h '[-AZ]' test.txt
匹配以连字符,或大写A,或大写Z开头的行

(5)预定义字符类

  • [:alnum:] 字母数字字符。在 ASCII 中,等价于:[A-Za-z0-9]

  • [:word:] [:alnum:]相同, 但增加了下划线字符。

  • [:alpha:] 字母字符。在 ASCII 中,等价于[A-Za-z]

  • [:blank:] 包含空格和 tab 字符。

  • [:cntrl:] ASCII 的控制码。包含了0到31,和127的 ASCII 字符。

  • [:digit:] 数字0到9

  • [:graph:] 可视字符。在 ASCII 中,它包含33到126的字符。

  • [:lower:] 小写字母。

  • [:punct:] 标点符号字符。

  • [:print:] 可打印的字符。等于[:graph:]中的所有字符,再加上空格字符。

  • [:space:] 空白字符,包括空格,tab,回车,换行,vertical tab, 和 form feed.在 ASCII 中, 等价于[\t\r\n\v\f]

  • [:upper:] 大写字母。

  • [:xdigit:] 用来表示十六进制数字的字符。在 ASCII 中,等价于[0-9A-Fa-f]

(6)选择

|表示匹配一系列字符串之中的一个。

echo "AAA" | grep -E 'AAA|BBB'
AAAecho "BBB" | grep -E 'AAA|BBB'
BBB'AAA|BBB'表示匹配字符串'AAA'或者是字符串'BBB'echo "CCC" | grep -E 'AAA|BBB'

grep程序使用-E参数,表示按照正则表达式规则匹配。并且,这个正则表达式放在单引号之中,为的是阻止Shell把|解释为管道操作符。

|可以多个连用,也可以与其他正则规则结合使用。

echo "AAA" | grep -E 'AAA|BBB|CCC'
AAAgrep -Eh '^(bz|gz|zip)' test.txt

附:

  • --:表示范围,如果它不是列表中的第一个或最后一个,也不是列表中某个范围的终点。

  • \<:匹配单词开头的空字符串。

  • \>:匹配单词末尾的空字符串。

\f匹配一个换页符。
\n匹配一个换行符。
\r匹配一个回车符。
\t匹配一个制表符。
\v匹配一个垂直制表符。

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

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

相关文章

Statefulset部署应用

上一部分我们分享到了使用 RS 没有办法让自己管理的多个 pod 都有一个独立的持久化声明&#xff0c;RS 没有办法在指定模板中对不同的 pod 做差异化处理 使用多个 RS 来分别管理自己的的一个 pod&#xff0c;当我们扩缩容的时候&#xff0c;也会出现问题&#xff0c;老的 pod …

C# 关于使用newlife包将webapi接口寄宿于一个控制台程序、winform程序、wpf程序运行

C# 关于使用newlife包将webapi接口寄宿于一个控制台程序、winform程序、wpf程序运行 安装newlife包 Program的Main()函数源码 using ConsoleApp3; using NewLife.Log;var server new NewLife.Http.HttpServer {Port 8080,Log XTrace.Log,SessionLog XTrace.Log }; serv…

Python 抽象工厂模式介绍、使用

一、抽象工厂模式介绍 概念&#xff1a; Python 抽象工厂模式&#xff08;Abstract Factory Pattern&#xff09;是一种创建型设计模式&#xff0c;它提供了一种创建对象的方式&#xff0c;用于创建一系列相关或相互依赖的对象。它为客户端提供了一种创建对象的接口&#xff…

【微服务架构设计】微服务不是魔术:处理超时

微服务很重要。它们可以为我们的架构和团队带来一些相当大的胜利&#xff0c;但微服务也有很多成本。随着微服务、无服务器和其他分布式系统架构在行业中变得更加普遍&#xff0c;我们将它们的问题和解决它们的策略内化是至关重要的。在本文中&#xff0c;我们将研究网络边界可…

使用贝叶斯算法完成文档分类问题

贝叶斯原理 贝叶斯原理&#xff08;Bayes theorem&#xff09;是一种用于计算条件概率的数学公式。它是以18世纪英国数学家托马斯贝叶斯&#xff08;Thomas Bayes&#xff09;的名字命名的。贝叶斯原理表达了在已知某个事件发生的情况下&#xff0c;另一个事件发生的概率。具体…

二十三种设计模式第十七篇--迭代子模式

迭代子模式是一种行为型设计模式&#xff0c;它允许你按照特定方式访问一个集合对象的元素&#xff0c;而又不暴露该对象的内部结构。迭代子模式提供了一种统一的方式来遍历容器中的元素&#xff0c;而不需要关心容器的底层实现。 该模式包含以下几个关键角色&#xff1a; 迭…

计算机网络(1) --- 网络介绍

目录 1.介绍协议 基础知识 协议 协议分层 OSI七层模型 2.TCP/IP五层模型 3.网络传输的基本流程 1.基本知识 协议报头 2.局域网通信的基本流程 3.网络传输流程 局域网分类 跨路由器传输 数据包封装和分用 4.网络中的地址管理 1.IP地址 2.MAC地址 3.区别 1.介绍…

Linux/Windows路由管理

本文主要介绍如果通过linux/Windows命令添加IPV6地址&#xff0c;查看添加IPV6默认路由&#xff0c;查看IPV6邻居缓存 一、Linux 1、查看地址 IPV4: route netstat -route ip route IPV6: ip -6 route show route -A inet6 route -62、添加IPV6地址 ip -6 addr add <…

训练自己的行文本检测EAST模型

训练自己的行文本检测EAST模型 训练数据格式 训练数据格式

成员方法(类方法)的使用细节与注意事项

目录 1.方法的调用机制原理图 2.访问修饰符 3.返回类型 4.形参列表 5.方法体

模糊神经网络机械故障诊断(MATLAB代码)

效果 用训练好的模糊神经网络对机械故障进行诊断,根据网络的预测值得到机械的技术状态。预测值小于 1.5 时为正常状态,预测值在 1.5~2.5 之间时为曲轴轴承轻微异响,预测值在 2.5~3.5 之间时为曲轴轴承严重异响预测值在 3.5~4.5 之间时为连杆轴承轻微异响,预测值大于 4.5 时为连…

选好NAS网络储存解决方案,是安全储存的关键

随着网络信息的发展&#xff0c;NAS也越来越受到企业的关注&#xff0c;NAS网络存储除了提供简单的存储服务外&#xff0c;还可以提供更好的数据安全性、更方便的文件共享方式。但市面上的产品种类繁多&#xff0c;我们该如何选择合适的产品&#xff0c;通过企业云盘&#xff0…

高效协作处理缓存清理需求:生产者-消费者模式助力多模块缓存管理

在现代应用系统中&#xff0c;缓存是提高性能和减少数据库负载的重要手段之一。然而&#xff0c;缓存的数据在某些情况下可能会过期或者变得无效&#xff0c;因此需要及时进行清理。在复杂的应用系统中&#xff0c;可能有多个系统、多个模块产生缓存清理需求&#xff0c;而这些…

建造者模式——复杂对象的组装与创建

1、简介 1.1、概述 建造者模式又称为生成器模式&#xff0c;它是一种较为复杂、使用频率也相对较低的创建型模式。建造者模式向客户端返回的不是一个简单的产品&#xff0c;而是一个由多个部件组成的复杂产品。 建造者模式是较为复杂的创建型模式&#xff0c;它将客户端与包…

三个常用查询:根据用户名 / token查询用户信息+链表分页条件查询

目录 1.根据用户名或者token查询用户信息 会员信息实体类 统一状态Result类 controller层 service层及实现类 dao层 测试&#xff1a; 2.链表分页条件查询 会员等级实体类 封装条件类PageVo controller层 service层及实现类 dao层 Mapper.xml层 测试 vue前端参考 1.根据用户名…

【MySQL】表的内外连接

目录 一、内连接二、外连接2.1 左外连接2.2 右外连接 三、OJ题 表的连接分为内连和外连 一、内连接 内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选&#xff0c;我们前面学习的查询都是内连接&#xff0c;也是在开发过程中使用的最多的连接查询。 语法&#x…

汉明距离,两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目。

题记&#xff1a; 两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目。 给你两个整数 x 和 y&#xff0c;计算并返回它们之间的汉明距离。 示例 1&#xff1a; 输入&#xff1a;x 1, y 4 输出&#xff1a;2 解释&#xff1a; 1 (0 0 0 1) 4 (0 1 0 0…

现在运动耳机什么牌子的好用、最好的运动耳机推荐

对于注重身体健康的小伙伴来说&#xff0c;每周必然都少不了有规律的运动&#xff0c;而运动的时候耳边没有音乐的陪伴总是稍显枯燥无味&#xff0c;很难让人提起干劲来。有些小伙伴觉得运动的时候戴着耳机&#xff0c;稍微跳动几下耳机就开始松动&#xff0c;随时都要分心提防…

QT 作业 day4 7/28

1.思维导图 2.手动完成服务器实现 .h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTcpServer> //服务器 #include <QTcpSocket> //连接客户端套接字 #include <QMessageBox> #include <QList> //套接字容器 #include &l…

无涯教程-jQuery - show( )方法函数

show()方法仅显示匹配元素中的每个元素(如果隐藏)。此方法还有另一种形式&#xff0c;可以控制动画的速度。 show( ) - 语法 selector.show( ); show( ) - 示例 以下是一个简单的示例&#xff0c;简单说明了此方法的用法- <html><head><title>The jQuer…