加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

PJzhang:最基本的正则表达式实例

发布时间:2020-12-14 05:57:46 所属栏目:百科 来源:网络整理
导读:猫宁!!! 参考链接: https://www.cnblogs.com/fozero/p/7868687.html http://tool.oschina.net/regex/# http://tool.oschina.net/uploads/apidocs/jquery/regexp.html ? 在1951 年,一位名叫Stephen Kleene的数学科学家,他在Warren McCulloch和Walter Pit

猫宁!!!

参考链接:

https://www.cnblogs.com/fozero/p/7868687.html

http://tool.oschina.net/regex/#

http://tool.oschina.net/uploads/apidocs/jquery/regexp.html

?

在1951 年,一位名叫Stephen Kleene的数学科学家,他在Warren McCulloch和Walter Pitts早期工作的基础之上,发表了一篇题目是《神经网事件的表示法》的论文,利用称之为正则集合的数学符号来描述此模型,引入了正则表达式的概念。正则表达式被作为用来描述其称之为“正则集的代数”的一种表达式,因而采用了“正则表达式”这个术语。

日常waf的运维过程中,需要针对突发漏洞事件制定临时防护策略,需要根据公司实际场景优化现有的waf策略,这个时候,正则表达式大有用处,可以极大地减少策略制定的数量,增强waf的防御疗效,控制运维成本。

对于正则表达式的元字符要分类解析,不同类型拆分开来,清晰可见。

假设现在有一个1.txt的文件,里面有很多单个字符串,我们现在的目的是快速找出那些我们想要的字符。

?

ab? ?包含ab的字符串,例如abc/1ab/wabc

?

第一部分

^ab? ?开头为ab的字符串,例如abc/abc1

ab$? ?结尾为ab的字符串,例如qab/c1ab

^ab$? ?开头和结尾都是ab,就是ab本身

ab.? ?ab后面跟上一个字符,例如abc/ab1,这个点可以表示除n(换行符)和r(回车符)的任意字符?

^a.b$? ?a为开头,b为结尾,中间是一个字符,例如a1b

ab*? ? a后面跟0个及以上的b,例如a/ab/abb

ab.*? ?ab后面跟0个及以上的字符,例如ab/abc/ab123

.*ab? ?表示ab为结尾,ab之前有0个及以上的字符,例如1ab/aab/1aaab

ab+? ?a后面跟1个及以上的b,例如ab/abb

ab?? ?a后面跟0个或者1个b,仅表示a/ab

ab.php? ?表示ab.php,中间的点被反斜杠转义了,例如ab*表示ab*

?

第二部分

ab{1}? ?表示a后面跟1个b,就是ab,数字只能是自然数

ab{1,3}? ?表示a后面跟1到3个b,就是ab/abb/abbb三个

^.{3}$? ?表示3个字符的字符串,例如111/a1a/bbb

a|b? ?表示a或者b,例如a|b|2表示a/b/2三个中的一个

a|bc? ?表示a或者bc

(a|b)cd? ?表示acd/bcd两个中的一个

[ab]cd? ?表示acd/bcd两个中的一个

[^ab]cd? ?一定不能是acd/bcd中任一个

[a-z]ab? ?表示开头是a到z的字符,例如aab/zab/rab

[A-Z]ab? ?表示开头是A到Z的字符,例如Aab/Rab

[0-9]ab? ?表示开头是0到9的字符,例如0ab/7ab

?

第三部分

ab? ?b是边界的意思,表示a字母为结尾的字符串

ba? ?表示a字母为开头的字符串

aB? ?B是不能为边界的意思,表示a字母不能为结尾的字符串

Ba? ?表示a字母不能为开头的字符串

d ??表示[0-9]

D ??表示[^0-9]

w ??表示字母数字下划线,[A-Za-z0-9_],里面包含下划线

W ??表示[^A-Za-z0-9_],里面包含下划线

?

第四部分

cx? ?c表示ctrl的意思,x对应特定控制符,且必须为大小写字母

f? ?换页符,对应cL,afb表示ab之间有一个换页符,就是文档上下页之间的那个空字符

n ??换行符,对应cJ,anb 表示ab之间有一个换行符,就是一行字符到头自动换到下一行间的空字符

r ??回车符,对应cM,arb表示ab之间有一个回车符,就是一行未到头,按enter换行的那个空字符

t? ?水平制表符,对应?cI,atb表示ab之间有一个水平制表符,例如编程时的一个tab键表示4个空格,实现了一次水平制表符的移动

v? ? 垂直制表符,对应cK,avb表示ab之间有一个垂直制表符,例如按向下/向上/向左/向右的任意一个箭头,都可以实现换一行从头输入

s? ?匹配任何空白字符,等同于[fnrtv]

S ??匹配任何非空白字符,与 s正好相反

?

实践可以加速正则表达式的掌握进程和牢靠程度,出现上文没有的情况去百度查一下就好,相信掌握了基础知识,搞清楚会快很多,也可以主动分析一些常用的正则表达式,例如邮箱、ip、网址等。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读