安全基础 --- 正则表达式
正则表达式是表达文本模式的方法
正则表达式(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 | 匹配一个垂直制表符。 |
相关文章:
安全基础 --- 正则表达式
正则表达式是表达文本模式的方法 正则表达式(Regular Expression),简称为正则或Regex,是一个用来描述、匹配和操作字符串的工具。 (1)限定字符 限定字符多用于重复匹配次数 常用限定字符: 语…...
【vue】vue面试高频问题之-$nextTick的作用和使用场景
nextTick的作用和使用场景 vue中的nextTick主要用于处理数据动态变化后,DOM还未及时更新的问题,用nextTick就可以获取数据更新后最新DOM的变化 api文档 Vue.nextTick( [callback, context] ) 参数: {Function} [callback]{Object} [context]…...
MySQL学习笔记之SQL语句执行过程查看
文章目录 参数使能查看最近一条SQL执行过程查看profiling打开开后,所有SQL语句执行耗时查看某一条SQL的执行过程指定要查看的性能选项查看所有性能选项 参数使能 以select语句为例,首先打开profile参数: mysql> set profiling 1; Query…...

如何以毫秒精度,查看系统时间以及文件的创建时间
用 cmd 查看系统的时间: powershell -command "(Get-Date -UFormat %Y-%m-%d %H:%M:%S).toString() . ((Get-Date).millisecond)" 用 XYplorer 查看文件的精确创建时间(含30天试用): XYplorer - File Manager for …...

基于机器学习的情绪识别算法matlab仿真,对比SVM,LDA以及决策树
目录 1.算法理论概述 2.部分核心程序 3.算法运行软件版本 4.算法运行效果图预览 5.算法完整程序工程 1.算法理论概述 情绪识别是一种重要的情感分析任务,旨在从文本、语音或图像等数据中识别出人的情绪状态,如高兴、悲伤、愤怒等。本文介绍一种基于…...

jMeter使用随记
参数化BodyData 先制作参数文件 再设置一个csv data set config 最后在body data里面写上参数${xxxxx}...

[语义分割] DeepLab v3(Cascaded model、ASPP model、两种ASPP对比、Multi-grid、训练细节)
Rethinking Atrous Convolution for Semantic Image Segmentation 论文地址:Rethinking Atrous Convolution for Semantic Image SegmentationPytorch 实现代码:pytorch_segmentation/deeplab_v3 这是一篇 2017 年发表在CVPR上的文章。相比 DeepLab V2 有…...

css - Media Query
使用bootstrap的grid system可以在一个较为粗糙的范围得到较好的响应性,但是通过viewport可以看到网站在具体哪个像素点处变得丑陋,再通过css media query来精细调整网页布局。 可以通过media query来提高网页移动响应能力。...

9.python设计模式【外观模式】
内容:为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一个子系统更加容易使用。 角色: 外观(facade)子类系统(subsystem classes) UML图 举…...
Webpack5 CopyPlugin的作用
在Webpack 5中,CopyPlugin是一个插件,用于将文件或目录从源位置复制到构建目录中。它的作用是帮助开发人员在构建过程中将静态文件(如图片、字体等)直接复制到输出目录,而无需经过任何处理。 CopyPlugin并不是必须的&…...
kafka服务端允许生产者发送最大消息体大小
1、kafka config服务端配置文件server.properties server.properties中加上的message.max.bytes配置,我目前设置为5242880,即5MB,可以根据实际情况增大。 message.max.bytes5242880 在生产者端配置max.request.size,这是单个消息…...
台阶型Nim游戏博弈论
台阶型Nim游戏 题目 https://www.acwing.com/problem/content/894/ 现在,有一个 n n n 级台阶的楼梯,每级台阶上都有若干个石子,其中第 i i i 级台阶上有 a i a_i ai 个石子( i ≥ 1 i \ge 1 i≥1)。 两位玩家轮流操作,每…...
NestJS 的 中间件 学习
基本概念 中间件是在路由处理程序之前调用的函数。中间件函数可以访问请求和响应对象。在程序中我们可以让多个中间件串起来一起使用,当多个中间件一起使用时我们可以使用next()调用下一个中间件。 中间件主要是可以实现如下功能: 执行任何代码更改请…...

搭建自己第一个golang程序
概念: golang 和 java有些类似,配置好环境就可以直接编写运行了;这里分两种: 一.shell模式 创建一个go类型的文件 往里面编写代码 二.开发工具模式 这里的开发工具 我选用goland package mainimport "fmt"func mai…...

Mysql加锁过程
1、背景 MySQL/InnoDB的加锁分析,一直是一个比较困难的话题。我在工作过程中,经常会有同事咨询这方面的问题。同时,微博上也经常会收到MySQL锁相关的私信,让我帮助解决一些死锁的问题。本文,准备就MySQL/InnoDB的加锁问…...
财经界杂志财经界杂志社财经界编辑部2023年第19期目录
《财经界》投稿邮箱:cnqikantg126.com(注明投稿“《财经界》”) ●崔编辑Q Q :695548262 微信号:f99832970 名刊名著_国内外名刊名著 财经名刊名著 李少鹏 ;王海蕴; 6-7 发改委专线 六方面发力 看中国经济形势,既要看准当…...

Linux常用命令——dpkg-split命令
在线Linux命令查询工具 dpkg-split Debian Linux中将大软件包分割成小包 补充说明 dpkg-split命令用来将Debian Linux中的大软件包分割成小软件包,它还能够将已分割的文件进行合并。 语法 dpkg-split(选项)(参数)选项 -S:设置分割后的每个小文件最…...

常见的二十种软件测试方法详解
一.单元测试(模块测试) 单元测试是对软件组成单元进行测试。其目的是检验软件组成单位的正确性。测试对象是:模块。 对模块进行测试,单独的一个模块测试,属于静态测试的一类 测试阶段:编码后或者编码前&…...

Python(一)
要做到坚韧不拔,最要紧的是坚持到底。——陀思妥耶夫斯基 2023 6 14~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --根据你自己的操作系统下载对应的。 -- pyhton 文档 --交互方式 使用的工具 --如何启动工具 -- 交互式方式一般在数据分析中…...

git pull无效,显示 * branch master -> FETCH_HEADAlready up to date. pull无效解决方法
报错情况 本地文件夹中删除文件后,git pull无效。显示如下: **** MINGW64 ~/****/haha (master) $ git pull origin master From https://gitee.com/****/haha* branch master -> FETCH_HEAD Already up to date.解决 方法一 命令…...

Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...

LeetCode - 394. 字符串解码
题目 394. 字符串解码 - 力扣(LeetCode) 思路 使用两个栈:一个存储重复次数,一个存储字符串 遍历输入字符串: 数字处理:遇到数字时,累积计算重复次数左括号处理:保存当前状态&a…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...

页面渲染流程与性能优化
页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...

SpringCloudGateway 自定义局部过滤器
场景: 将所有请求转化为同一路径请求(方便穿网配置)在请求头内标识原来路径,然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...

MySQL:分区的基本使用
目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区(Partitioning)是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分(分区)可以独立存储、管理和优化,…...
OD 算法题 B卷【删除字符串中出现次数最少的字符】
文章目录 删除字符串中出现次数最少的字符 删除字符串中出现次数最少的字符 实现删除字符串中出现次数最少的字符,若(最少的)有多个字符出现次数一样,则都删除。输出删除后的字符串,其他字符保持原有顺序;…...

VibePlayer
源代码地址: VibePlayer: VibePlayer是一款功能强大的Android音乐播放器应用,专为音乐爱好者设计,提供了丰富的音乐播放和管理功能。 用户需求 VibePlayer是一款功能强大的Android音乐播放器应用,专为音乐爱好者设计࿰…...

深入解析Java21核心新特性(虚拟线程,分代 ZGC,记录模式模式匹配增强)
文章目录 前言一、虚拟线程 (Virtual Threads - JEP 444) - 并发的革命1.1 解决的核心问题🎯1.2 工作原理与核心机制⚙️1.3 使用详解与最佳实践🛠️1.4 注意事项⚠️1.5 总结 📚 二、分代 ZGC (Generational ZGC - JEP 439) - 低延迟新高度2…...