猫宁!!!

参考链接:

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三个

ab{1,}    表示a后面跟1个及以上的b,例如ab/abb/abbbbb

^.{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

第三部分

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

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

a\B   \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,a\fb表示ab之间有一个换页符,就是文档上下页之间的那个空字符

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

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

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

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

\s   匹配任何空白字符,等同于[\f\n\r\t\v]

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

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

PJzhang:最基本的正则表达式实例的更多相关文章

  1. js正则表达式实例(汇总)

    来源:如何用JAVASCRIPT 正则表达式取出字符串最后一组数字,谢谢  如  30CAC0040 取出40  3SFASDF92 取出92  正则如下://d+$/g   统一空格个数  来源:正 ...

  2. JavaScript正则表达式实例汇总

    本文会持续更新 -------------------------------------------------------------------------------------------- ...

  3. .net正则表达式实例

    正则表达式的本质是使用一系列特殊字符模式,来表示某一类字符串.正则表达式无疑是处理文本最有力的工具,而.NET的System.dll类库提供的System.Text.RegularExpression ...

  4. 史上最全PHP正则表达式实例汇总

    收集了一份php正则表达式的实例教程,真心不错,记录下. 正则表达式用于字符串处理.表单验证等场合,实用高效. 一些常用的表达式: $str = preg_replace("/(<a. ...

  5. C++11 正则表达式——实例系统(转载)

    一.用正则表达式判断邮箱格式是否正确 1 #include <regex> #include <iostream> #include <string> bool i ...

  6. PHP正则表达式实例汇总

    $str = preg_replace("/(<a.*?>)(.*?)(<\/a>)/", '\1<span class="link&quo ...

  7. Java 正则表达式实例操作

    Regular Expression正则表达式,简称RegExp,常规通用的表达式,在多个开发语言中都有它的实现,可以通过正则表达式来快速的检索.匹配.查找.替换字符串中的文本. 简单实例 匹配网址 ...

  8. Android 正则表达式实例

    editText正则表达式的使用 检查输入是否符合规则 import Android.app.Activity; import android.os.Bundle; import android.vi ...

  9. php开发文章发布示例(正则表达式实例开发)

    存档: post.php <form method="post" action="viewthread.php" target="_blank& ...

随机推荐

  1. mongodb学习之:副本集

    前面一张介绍了主从模式,现在mongoDB官方已经不建议使用主从模式了,替代方案是采用副本集的模式.副本集不能在一台电脑上操作.需要准备3台电脑进行搭建.副本集就是mongoDB副本所组成的一个集群. ...

  2. System.IO.File类和System.IO.FileInfo类

    1.System.IO.File类 ※文件create, copy,move,SetAttributes,open,exists ※由于File.Create方法默认向所有用户授予对新文件的完全读写. ...

  3. Jquery AJAX如何使用Promise/Deferred实现顺序执行?

    有的时候有我有N个AJAX请求,第下个请求可能要依赖上个请求的返回值, 可以用 $.ajax("test1.php").then(function(data) { // data ...

  4. 大数据之ES系列——第一篇 ElasticSearch2.2 集群安装部署

    第一部分  安装准备 准备三台主机节点: hc11.spads  192.168.160.181 hc12.spads  192.168.160.182 hc13.spads  192.168.160 ...

  5. selenium2 python范例

    selenium2 python范例 下面脚本的功能是:打开谷歌浏览器-->跳转到某个网址-->输入用户名和密码登录-->读取页面内的数据并求和. # coding=utf-8 #编 ...

  6. 剑指Offer:链表中倒数第k个结点【22】

    剑指Offer:链表中倒数第k个结点[22] 题目描述 输入一个链表,输出该链表中倒数第k个结点. 解题思考 我们定义两个指针L和R,R事先移动K-1个位置,然后两者同时往后移动直到遇到R的下个节点为 ...

  7. HZNU 2154 ldh发奖金【字符串】

    题目链接 http://acm.hznu.edu.cn/OJ/problem.php?id=2154 思路 先判断不能拆分的情况 以为需要拆分成两个正整数 所以我们可以知道 只有个位的数字 是不能够拆 ...

  8. CSS3学习笔记(3)—左右飞入的文字

    前几天看到一个企业招聘的动画觉得很炫,里面有个企业介绍的文字是用飞入的效果做出来的,今天尝试了写了一下,感觉还不错~\(≧▽≦)/~啦啦啦 下面来看我做的动态效果: 其实上面的效果很简单的,我的截图软 ...

  9. 【小程序】bindconfirm点击小键盘触发事件、focus自动获取焦点

    最近在写小程序,项目要求写一个搜索框,在进入页面时就触发input的事件,调出键盘,点小键上的搜索按钮 就触发搜索事件,分享一下. bindconfirm 是点击小键盘上的搜索按钮就触发要执行的方法 ...

  10. struts2 session登录

    session:记录于服务器端的信息,当客户端传来信息时候,判断是不是指定的信息. 常见应用:判断用户是否登录. struts具体的实现不写了,写主要的. 在action的方法中加入: ActionC ...