PJzhang:最基本的正则表达式实例
猫宁!!!
参考链接:
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:最基本的正则表达式实例的更多相关文章
- js正则表达式实例(汇总)
来源:如何用JAVASCRIPT 正则表达式取出字符串最后一组数字,谢谢 如 30CAC0040 取出40 3SFASDF92 取出92 正则如下://d+$/g 统一空格个数 来源:正 ...
- JavaScript正则表达式实例汇总
本文会持续更新 -------------------------------------------------------------------------------------------- ...
- .net正则表达式实例
正则表达式的本质是使用一系列特殊字符模式,来表示某一类字符串.正则表达式无疑是处理文本最有力的工具,而.NET的System.dll类库提供的System.Text.RegularExpression ...
- 史上最全PHP正则表达式实例汇总
收集了一份php正则表达式的实例教程,真心不错,记录下. 正则表达式用于字符串处理.表单验证等场合,实用高效. 一些常用的表达式: $str = preg_replace("/(<a. ...
- C++11 正则表达式——实例系统(转载)
一.用正则表达式判断邮箱格式是否正确 1 #include <regex> #include <iostream> #include <string> bool i ...
- PHP正则表达式实例汇总
$str = preg_replace("/(<a.*?>)(.*?)(<\/a>)/", '\1<span class="link&quo ...
- Java 正则表达式实例操作
Regular Expression正则表达式,简称RegExp,常规通用的表达式,在多个开发语言中都有它的实现,可以通过正则表达式来快速的检索.匹配.查找.替换字符串中的文本. 简单实例 匹配网址 ...
- Android 正则表达式实例
editText正则表达式的使用 检查输入是否符合规则 import Android.app.Activity; import android.os.Bundle; import android.vi ...
- php开发文章发布示例(正则表达式实例开发)
存档: post.php <form method="post" action="viewthread.php" target="_blank& ...
随机推荐
- sharding-jdbc源码学习(一)简介
背景 对于大型的互联网应用来说,数据库单表的记录行数可能达到千万级甚至是亿级,并且数据库面临着极高的并发访问.采用Master-Slave复制模式的MySQL架构,只能够对数据库的读进行扩展,而对数据 ...
- python中的括号以及元组和列表的区别
1 python中的括号 1.1 花括号 花括号表示的是字典,即键值对. 1.2 方括号 方括号表示的是列表,类似于数组,但是可以允许存放混杂类型的数据. 1.3 圆括号 圆括号表示的是元组,类似于列 ...
- SQL 关联操作
- /dev/sda2 is mounted; will not make a filesystem here!
一定要记住,不可以在分区挂载之后再进行格式化!!在错误提示当中可以看出你的分区已经挂载了.先将这个分区卸载了再重新格式化:umount /dev/sda2mkfs.ext2 /dev/sda2这样就没 ...
- 随机数生成程序代码( 伪随机<stdlib.h> )
#include <stdio.h> #include <string> #include <stdlib.h> #include <algorithm> ...
- Zookeeper集群搭建安装
三台 Linux虚拟机,每台都需要安装Jdk环境 1.上传Zookeeper安装包 (比较大 直接上传得了) 或者:wget https://mirrors.tuna.tsinghua.edu.cn/ ...
- 使用ffmpeg添加logo
1 网上搜出的一些ffmpeg添加logo的命令都不成功,调查了官方手册后以下这种用法成功: ffmpeg -y -i input.mp4 -vf "movie=logo.png [logo ...
- TestNG测试用例编写和执行
编写TestNG用例测试基本上包括以下步骤: 编写业务逻辑 针对业务逻辑中涉及的方法编写测试类,在代码中插入TestNG的注解 直接执行测试类或者添加一个testng.xml文件 运行 TestNG. ...
- codeforces B. Ciel and Flowers 解题报告
题目链接:http://codeforces.com/problemset/problem/322/B 题目意思:给定红花.绿花和蓝花的朵数,问组成四种花束(3朵红花,3朵绿花,3朵蓝花,1朵红花+1 ...
- 「LuoguP3376」 【模板】网络最大流
题目描述 如题,给出一个网络图,以及其源点和汇点,求出其网络最大流. 输入输出格式 输入格式: 第一行包含四个正整数N.M.S.T,分别表示点的个数.有向边的个数.源点序号.汇点序号. 接下来M行每行 ...