首页
Portal
业界资讯
社区
BBS
我的家园
Space
个人空间
导读
Guide
登录
/
注册
用户名
Email
自动登录
找回密码
密码
登录
注册
搜索
搜索
本版
帖子
用户
本版
帖子
用户
帖子
好友
道具
勋章
收藏
任务
淘帖
门户
导读
设置
我的收藏
退出
腾讯QQ
微信登录
首页
›
≡≡网络技术≡≡
›
PHP语言
›
PHP正则表达式
返回列表
PHP
PHP正则表达式
[ 复制链接 ]
灰儿
2022-6-9 09:41:24
什么是正则表达式?
正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文
正则表达式的特点:
1. 灵活性、逻辑性和功能性非常强;
2. 可以迅速地用极简单的方式达到字符串的复杂控制。
3. 对于刚接触的人来说,比较晦涩难懂。
正则表达式用途
判断字符串是否符合某一规则(判断是否符合手机号、邮箱规则)。
从一个字符串中找出符合规则的所有子字符串(取HTML标签名)。
正则表达式的格式?
"/表达式/[修饰符]"
当使用正则表达式时要注意什么?
PHP中使用正则规则一定要加代表正则的标识 / /
php中正则表达式常用相关函数是什么
Preg_match_all(正则表达式、匹配字符串、匹配到的东西放入数组)
该函数会返回匹配到的次数(可能是0),或者如果发生错误返回FALSE
preg_replace(正则表达式、替换成什么、匹配字符串)
该函数会返回替换后的结果
正则表达式的语法——字符(一)
数字:\d
非数字:\D
空白字符(空格、制表符、换页符等):\s
非空白字符:\S
单词字符(26个英文字母+数字+下划线):\w
非单词字符:\W
正则表达式的语法——字符(二)
字符集合:[单个字符或字符区间],用于匹配集合内字符
比如:
[a-z]表示a-z这26个小写字母
[0-9a-z]表示0-9这10个数字和a-z这26个小写字母
[123a-h]表示包含数字1,2,3和a-h这8个字母
注意:两个不同的字符段间一定不要用逗号隔开
非集合字符:[^单个字符或字符区间],用于匹配非集合内字符
比如:
[^0-9]表示匹配所有非数字字符
[^a-zA-Z]表示匹配所有非字母字符
字符集合的数字区间该注意什么?
数字区间正则只能匹配0-9的数字,因为正则只能一位一位的匹配,所以超过9以外的数字只是我们给的概念,对于正则机制来说它是认不到的,比如[100-120]就无法被匹配
正则表达式的语法——关键字
() 表示一个整体
^ 匹配输入字符串的开始位置
$ 匹配输入字符串的结尾位置
. 通配符,代表任意字符但不匹配换行
* 匹配0次或者多次
+ 匹配1次或者多次
\ 转义字符
| 两项之间的一个选择
转义字符“\”的使用
转义字符主要是将一些特殊字符转为普通字符。而这些常用特殊字符有”.”、”?”、”\”等
^和$结合使用的注意问题
如果^和$结合使用且中间没有其他表达式,那么他们中间就不能出现别的字符,不然无法匹配,比如/^3b$/表示3开头b结尾,所以只有3b才能被匹配,如果写了3acb就无法被匹配。什么情况下才能被匹配呢,可以使用.(通配符)。
非集合字符的“^”和关键字“^”的区别
非集合字符的“^”可理解为排除字符,排除操作,一般放在[]中,如[^1-5], 表示该字符不是1-5之间的数字;而关键字的“^”表示行开始,如"^ab"表示以ab开头的字符串。
正则表达式的语法——限定符
{n} 例如0{8} 表示只有连起来8个0才会被匹配
{n,} 例如0{2,} 表示只要2个0及其以上的就会被匹配
{n,m} 例如0{2,4} 表示最少匹配2个0,最多匹配4个0
注:被匹配时,默认匹配最多的次数
正则表达式的语法——修饰符
i 表示不区分大小写
A 匹配规则必须从头开始匹配
s 表示.将匹配一切字符
x 表示正则表达式中的空白字符会被忽略
e 代码执行仅限preg_replace()
匹配模式的优先级是什么?(优先级从高到低排)
\转义字符;()[]大原子和原子表;*+?{n}{n,}{n,m}重复匹配(匹配次数);^$\b\B边界限制;|模式选择
好了,该说的都说完了
可以来看CTF题吧
http://b-regex-1s.lab.aqlab.cn/?id=1
<?php
$key='flag{********************************}';
$Regular= preg_match("/zkaq.*key.{2,9}:\/.*\/(key*key)/i", trim($_GET["id"]), $match);
if( $Regular ){
die('key: '.$key);
}
来分析分析吧~~~
$key='flag{********************************}'; 很明显flag就是这个
$Regular= preg_match("/zkaq.*key.{2,9}:\/.*\/(key*key)/i", trim($_GET["id"]), $match);
这就是flag能出来的条件
又上面说过
Preg_match_all(正则表达式、匹配字符串、匹配到的东西放入数组)
该函数会返回匹配到的次数(可能是0),或者如果发生错误返回FALSE
所以,
/zkaq.*key.{2,9}:\/.*\/(key*key)/i 是正则表达式
/zkaq.*key.{2,9}:\/.*\/(key*key)/i
/i 这是修饰符,表示我们输入的key值不限制大小写
zkaq 这是字符串的内容
.* 表示任意字符的任意次数,输入什么都可以
key 这个是字符串的内容
.{2,9} 表示 最少匹配2个任意字符,最多匹配9个任意字符
: 直接复制下来
\/ 表示对斜杠/进行转义,就是直接将/使用
(key*key) ()是关键字,表示key*key是一个整体,*是匹配y的次,即key*key中只能有0个或者多个y
所以呀,flag可以是
zkaq--key--:/--/kekey
zkaq22key222222:/4444/kekeyyy
trim($_GET["id"]) 是要匹配的字符串
trim() 方法用于删除字符串的头尾空白符,空白符包括:空格、制表符 tab、换行符等其他空白符等。在这里匹配的是id
$match 是匹配到的东西
大家去玩玩吧~~~
————————————————
原文链接:
https://blog.csdn.net/weixin_46601374/article/details/122310702
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
显身卡
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册
回复
本版积分规则
回帖后跳转到最后一页
灰儿
管理员
9841篇
主题总数
7
总热度
提问
+关注
产品动态
2024-05-15
泛微(weaver)e-cology_V10公文管理,启用预览正文和套红预览功能
2024-05-14
泛微E10(e-cology)文件存储位置与打开方式
2024-05-14
神州数码云科(DCN) DCME-320路由器关闭互联网22、23、53端口方法
2024-05-13
关于webapp与WEB-INF的记录
2024-05-13
泛微(weaver)e-cology_V10公文管理,上传套红模板教程
2024-05-13
防火墙指标:吞吐量、时延、新建连接速率、并发连接数
2024-05-13
核心路由器十项性能指标
2024-05-11
神州数码(DCN) DCME-320 路由器(linux软路由)常用命令详解
热点推荐
1
泛微(weaver)e-cology_V10公文管理,启用预览正文和套红预览功能
2
泛微E10(e-cology)文件存储位置与打开方式
3
神州数码云科(DCN) DCME-320路由器关闭互联网22、23、53端口方法
4
关于webapp与WEB-INF的记录
5
泛微(weaver)e-cology_V10公文管理,上传套红模板教程
6
防火墙指标:吞吐量、时延、新建连接速率、并发连接数
7
核心路由器十项性能指标
8
神州数码(DCN) DCME-320 路由器(linux软路由)常用命令详解
热门板块
PC操作系统
启动和引导
手机操作系统
硬件相关
办公软件
多媒体技术
产品动态
2024-05-15
泛微(weaver)e-cology_V10公文管理,启用预览正文和套红预览功能
2024-05-14
泛微E10(e-cology)文件存储位置与打开方式
2024-05-14
神州数码云科(DCN) DCME-320路由器关闭互联网22、23、53端口方法
2024-05-13
关于webapp与WEB-INF的记录
2024-05-13
泛微(weaver)e-cology_V10公文管理,上传套红模板教程
2024-05-13
防火墙指标:吞吐量、时延、新建连接速率、并发连接数
2024-05-13
核心路由器十项性能指标
2024-05-11
神州数码(DCN) DCME-320 路由器(linux软路由)常用命令详解
热点推荐
1
泛微(weaver)e-cology_V10公文管理,启用预览正文和套红预览功能
2
泛微E10(e-cology)文件存储位置与打开方式
3
神州数码云科(DCN) DCME-320路由器关闭互联网22、23、53端口方法
4
关于webapp与WEB-INF的记录
5
泛微(weaver)e-cology_V10公文管理,上传套红模板教程
6
防火墙指标:吞吐量、时延、新建连接速率、并发连接数
7
核心路由器十项性能指标
8
神州数码(DCN) DCME-320 路由器(linux软路由)常用命令详解
热门板块
PC操作系统
启动和引导
手机操作系统
硬件相关
办公软件
多媒体技术
学习中心
站长自定义文字内容,利用碎片时间,随时随地获取优质内容。
Q设计语言
了解更多
Q Design 提供商家设计所需的指导与资源,帮商家快速完成产品设计、降低生产成本。
学习中心
站长自定义文字内容,利用碎片时间,随时随地获取优质内容。
Q设计语言
了解更多
Q Design 提供商家设计所需的指导与资源,帮商家快速完成产品设计、降低生产成本。