“ 一句一图”
正则真滴非常重要,写代码必备,不会的小伙伴赶紧学起来
下列学习使用的网站为
https://regexlearn.com/learn/regex101
冲冲冲,学起来吧
我们先来看一看表达重复次数的符号
*(星号)
在字符串后面加上*,表示一个字符完全不匹配或可以匹配多次。
+(加号)
表示一个字符可以出现一次或者多次,把加号放在它的后边
?(问号)
表示一个字符是可选的,也就是说前面的字符出现一次或者0次
{}(大括号)
表示一个字符出现的确切次数,在该字符的末尾,将它出现的次数写进大括号中。
表示一个字符至少出现多少次,我们在该字符的末尾,将它至少出现的次数写进大括号中,{x,}。
为了表示一些字符出现的次数在某个数字范围内,在字符末尾,将它至少和至多出现的次数写进大括号{x,y}
一个小练习
匹配文本中的 4 位阿拉伯数字。
()括号
用来分组的,使用这些分组来引用或执行一些规则
引用组,我没用过,第一次见。
(?:)非捕获分组
对表达式分组,确保不被引用保护
|(竖线)
竖线允许一个表达式包含多个不同的分支
(转义字符)
在书写正则表达式时,我们会用到 { } [ ] / + * . $^ | ? 这些特殊字符 。为了匹配这些特殊字符本身,我们需要通过 将它们转义
^(插入符)
注意:^[0-9]代表数字开头的,[^0-9]代表除了0-9之外的数
匹配字符串开始
$(美元符号)
匹配字符串的结束
w(单词字符)
W(非单词字符)
d(数字字符)
D(非数字字符)
s(空白符)
S(非空白符)
上面这些没啥说的,就是分别对应的各种字符,接下来我们讲一讲零宽断言
(?=)正向先行断言
匹配数字后面有PM的在字符
(?!)负向先行断言
匹配数字后面没有PM的字符
(?<=)正向后行断言
匹配字符前面有$的字符
(?<!)负向后行断言
匹配前面没有$的字符
接下来讲讲标志
标志改变表达式的输出。这就是标志也称为 修饰符 的原因。标志决定表达式是否将文本视作单独的行处理,是否区分大小写,或者是否查找所有匹配项。
/g 全局标志
/m 多行标志
/i 忽略大小写
接下来是讲贪婪匹配与懒惰匹配,请仔细看例子
贪婪匹配
正则表达式默认执行贪婪匹配
懒惰匹配
与贪婪匹配不同,懒惰匹配在第一次匹配时停止
喜欢就点个关注再走吧
---------------------
---------------------
欢迎关注公众号:虚拟尽头
如何做到更加细 致的信息搜集(下)
师傅们,聊天框发送"二维码",加我好友一起交流呀(加的时候请备注来自公众号)。
原文始发于微信公众号(虚拟尽头):一文学懂正则匹配
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论