正则表达式学习小结

前言

文章同步于我的个人博客https://quan9i.github.io/zhengze/#more中,欢迎大家访问
近期在学习web命令执行时由于正则表达式不是太理解而影响了刷题速度,因此来对正则进行复习来加强对其相关知识的理解

匹配字符串[ ]

[ ]中的字母可以匹配到后面的字符组中,例如要匹配大小写的python,可以如下表达

[Pp]ython

具体示例如下:
在这里插入图片描述可见python和Python都可以被检测出来

区间[ ]

如果想表示很多数字或者多个字母,可以用-来表示,例如[1,2,3,4,5,6,7,8,9]可以用[1-9]来表示
具体示例如下
在这里插入图片描述

匹配特殊符号

正则表达使用了 - 号代表了区间,但是我们有时候需要匹配的符号就是 -号,该怎么办呢?

这个时候我们需要对-号进行转义操作,即 \-。

在正则中使用 \ 就可以进行对特殊符号进行转义,对 - 进行转义就可以表示为 \-,即 \- 就代表了 - 号本身。

    偷偷告诉你,转义符 \ 也适用于其他的符号,例如匹配圆括号可以使用 \(

转自编程胶囊
具体示例如下
在这里插入图片描述
方法一:正向思考
观察匹配的字符,用\来防止被转义,构造payload如下

[\[\-\(]
//最外层的[]代表的是固定格式,然后从左往右看,\[代表匹配[\-代表匹配-,\(代表匹配(

执行结果如下
在这里插入图片描述

方法二:排除法
不想匹配到的数字和字符,我们可以用^来避免匹配这些,,从而达到目的,payload如下

[^0-9 A-Z a-z].*
//.代表除换行符之外的所有字符,*表示匹配零次或多次
//^ 在方括号表达式中使用时,它表示不接受该字符集合。

执行结果
在这里插入图片描述
对于^的讲解

n[^e] 的意思就是n后面的字母不能为 e。

示例如下
在这里插入图片描述

快捷匹配数字和字母

快捷方式 	描述
\w 			与任意单词字符匹配,任意单词字符表示 [A-Z][a-z][0-9]、_
\d 			与任意数字匹配

具体示例如下
在这里插入图片描述

\s			可以匹配空白字符,比如空格,tab、换行等。

在这里插入图片描述

\b 			匹配的是单词的边界

在这里插入图片描述

^与$

 ^指定的是一个字符串的开始
$指定的是一个字符串的结束

具体示例如下
在这里插入图片描述

可选字符?

有时,我们可能想要匹配一个单词的不同写法,比如color和colour,或者honor与honour。
这个时候我们可以使用 ? 符号指定一个字符、字符组或其他基本单元可选
这意味着正则表达式引擎将会期望该字符出现零次或一次。

具体示例如下
在这里插入图片描述
对于payload的解释

favo.?rite 
//.代表除换行符的一切,?表示匹配除去前面字符的其他字符0次或1次
那.?在这里的含义就是favo再匹配除换行的一切

.?的示例:
在这里插入图片描述

重复

在一个字符组后加上{N} 就可以表示在它之前的字符组出现N次。

在这里插入图片描述

对于payload的解释

\d{3}-\d{5}
\d{3}表示字符串长度为3
\d{5}表示字符串长度为5
两个连到一起,意思是第一个长度为3,第二个长度为5

重复区间

语法:{M,N},M是下界而N是上界。
具体示例如下
在这里插入图片描述

开闭区间

闭区间不写即可表示匹配一个或无数个。

+等价于{1,},*等价于{0,}

具体示例
在这里插入图片描述

总结
多种匹配模式
实例 	描述
[Pp]ython 	匹配 “Python” 或 “python”。
rub[ye] 	匹配 “ruby” 或 “rube”。
[abcdef] 	匹配中括号内的任意一个字母。
[0-9] 	匹配任何数字。类似于 [0123456789][a-z] 	匹配任何小写字母。
[A-Z] 	匹配任何大写字母。
[a-zA-Z0-9] 	匹配任何字母及数字。
[^au] 	除了au字母以外的所有字符。
[^0-9] 	匹配除了数字外的字符。

实例 	描述
. 	匹配除 “\n” 之外的任何单个字符。要匹配包括 ‘\n’ 在内的任何字符,请使用象 ‘[.\n]’ 的模式。
? 	匹配一个字符零次或一次,另一个作用是非贪婪模式
+ 	匹配1次或多次
* 	匹配0次或多次
\b 	匹配一个长度为0的子串
\d 	匹配一个数字字符。等价于 [0-9]\D 	匹配一个非数字字符。等价于 [^0-9]\s 	匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]\S 	匹配任何非空白字符。等价于 [^ \f\n\r\t\v]\w 	匹配包括下划线的任何单词字符。等价于’[A-Za-z0-9_]’。
\W 	匹配任何非单词字符。等价于 ‘[^A-Za-z0-9_]‘。
\b 	匹配一个长度为0的子串

在这里插入图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值