关于正则匹配语法的小小总结
常见比赛正则匹配出现在PHP和Python语句中
正则表达式:
用来匹配字符串的表达式
单字符匹配
\d:匹配一个数字 \w:匹配一个字母或数字
\s:匹配一个空格或空白符 .:匹配任意字符 0\d:匹配0加上一个数字,可以匹配07,但不匹配0A 0\w:07和0A都能匹配
多字符匹配
*:表示任意个字符(>=0) +:表示至少1个字符 ?:表示0或1个字符 {n}:表示n个字符 {n,m}:表示n到m个字符
举例
\d{3}:匹配3个数字 \w{3,5}:匹配3到5个数字或字符
范围匹配
[0-9\_]:匹配一个数字或者下划线(\转义) [0-9a-zA-Z]:匹配一个数字或者大小写字母 [a-zA-Z][0-9]{0.3}:匹配大小写字母开头,加上后面最多3个数字的字符 ^\d:匹配数字开头字符 \d$:匹配以数字结束字符
PHP的preg_match
在preg_match中竖线等于逻辑或,/是正则perl风格的写法,置于头尾
举例
if(preg_match('/\s+/',$GET["name"])) { die("ERROR"); }
用于匹配至少一个空格和空白字符
if(!(preg_match('/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/',GET['ip']))) { echo('false'); }
用于匹配以数字开头,以数字结尾,至少4位,最多12位的ip地址
[Sign]做不出ctf题的时候很痛苦,你只能眼睁睁看着其他人领先你