正则表达式学习
限定符
? (问号)
代表?前边的字符需要出现0次或1次
* (星号)
表示*前边的字符可以出现0次或无数次
+ (加号)
匹配出现1次以上的字符
{} (花括号)
限定字符出现的次数 eg: ab{6}c ——->指中间b出现了6次 eg: ab{2,6} ——->指中间b出现的次数在2-6之间包括2和6 eg: ab{2,} ——->指中间b出现的次数在2之上包括2
限定多个字符同时出现
使用括号() 将多个字符包含起来 然后结合上边的限定符
或运算符
re:a (catdog) 匹配a cat或者a dog 正则中的空格和括号不能少
re:a catdog 匹配的是a cat或者dog
字符类
re: [abc]+ 匹配由abc组成的字符串
re:[a-zA-Z0-9] 匹配大小写字符和数字
re: [^0-9]+ 匹配除下0-9以外的字符
元字符
\b
表示字符的边界 re:\ba 匹配开头的a
re: a\b 匹配结尾的a
\d
代表数字字符 等同于0-9
\D
代表非数字字符
\w
代表单词字符 所有的英文字符 数字 下划线
\W (大写W)
代表非单词字符
\s
代表空白符 包含 Tab和换行符
\S (大写)
代表非空白字符
.
代表任意字符
^
匹配行首
re:^a 匹配开头的a
$
匹配行尾
re:a$ 匹配行尾的a
贪婪与懒惰匹配
re:<.+> 会匹配尽可能多的
加上? 将贪婪转为懒惰
re:<.+?>
实例
匹配ip地址
re: \d+.+\d+.\d+.+d+
会匹配 数字 . 数字 . 数字 . 数字 .
改进匹配点中间的数字介于0-255 re: ((\b25[0-5]\b2[0-4]\d\b[01]?\d\d?).){3}(25[0-5]2[0-4]\d[01]?\d\d?) (但是会匹配0.0.0.0和00.00.00.00 000.000.000.000)
re: ctf{[a-zA-Z0-9-]*} 匹配以ctf{开头以}结尾的字符串
正则表达式学习
http://example.com/2021/04/14/OldBlog/正则表达式学习/