正则表达式(Regular Expression)入门
一.正则表达式的使用场景:
上传文件类型的判断,电子邮件的判断,电话号码的判断,文本的搜索与替换。
二.正则表达式的语法规则:
1.行定位符:
^表示行的开始,$表示行的结尾
^tm
可以匹配 tm equal Tomorrow Moon
不匹配 Tomorrow Moon equal tm
tm$
可以匹配后者
tm
可以匹配任意字符串
2.单词定界符(\b、\B)
上面的定位符,如果匹配的只是tm,html和utmost也能匹配出来,如果只是要找tm这个单词,使用\b表示查找的是一个完整的单词
\btm\b

大写\B与\b相反,匹配的子串不能是一个完整的单词,而是其他单词或子串的一部分

3.字符类([])
正则表达式区分大小写,如果需要忽略的话,可以使用方括号[],一个方括号匹配一个字符,如果
[Tt][Mm]
则可以匹配不区分大小写的tm

POSIX风格的预定义字符类
[[:digit:]] //任何数字
[[:alnum:]] //任何字母和数字
[[:alpha:]] //任何字母
[[:blank:]] //任何空白字符
[[:xdigit:]] //任何十六进制的数字,相当于[0-9a-fA-F]
[[:punct:]] //任何标点符号
[[:print:]] //所有的可打印字符,包括空白字符
[[:space:]] //空白字符(空格、换行符、换页符、回车符、水平制表符)
[[:graph:]] //所有的可打印字符,不包括空白符
[[:upper:]] //所有大写字母
[[:lower:]] //所有小写字母
[[:cntrl:]] //所有控制字符
PCRE的预定义字符类使用反斜线表示
4.选择字符(|)
[]只能匹配单个字符,|可以匹配任意长度的字符串,使用[]时候,配合连字符-一起使用,比如[a-d]表a或b或c或d,又如T|tM|m,表以字母T或t开头,后面跟一个字母M或m。
5.连字符[-]
[a-e]
可以标志字母的范围,上述表示a到e的字符
[a-zA-Z]
标志a到e的所有大小写
注意:
sublime text3编辑器

atom编辑器
要打开大小写功能。
6.排除字符([^])
正则表达式提供“^”表示不符合的字符,^一般放在[]中
[^a-v]
表示26字母中不包含a到v的字母
[^-]
表示不包含1到5的数字
[^a-zA-Z]
表示开头不含字母的匹配项
7.限定符(?*+{n,m})
| 限定符 | 说明 |
| * | 匹配前面子表达式0次或多次,如
zo* 能匹配"z"以及"zoo",猜测是o匹配零次,z匹配也可以,*等价于{0,} |
| + |
匹配前面的子表达式一次或多次。例如'zo+'能匹配"zo”以及"zoo", 但不能匹配"z"。+等价于{1,} |
| ? | 匹配前面的子表达式零次或一次。例如,
do(es)? 可以匹配do或does中的do,?等价于{0,1} |
| {n} |
n是一个非负整数。匹配确定的n次。例如, o{}
匹配确定的n次,如匹配o两次,可以匹配food中的o,但不能匹配pop中的o |
| {n,} | 至少匹配n次,如
o{,}
不能匹配pop中的o,可以匹配fooooooooood中的所有o,但不能匹配pop中的o |
| {n,m} | m和n都是非负整数,其中n<=m,最少匹配n次,最多匹配m次,如
o{,}
将匹配foooooood前三个o, o{,}
等价于0? |
8.点字符(.)
.字符可以匹配除了换行符意外任意一个字符,要匹配以s开头t结尾并且中间包含一个字母的单词,格式如下:
^s.t$
要匹配一个单词,第一个字母为r,第3个字母为s,最后一个字母为t。
正确的正则表达式为
^r.s.*t$
9.转义字符(\)
就是将" " " ," ' " ,"\" , "?" 变为普通的字符
[-]{,}(\.[-]{,}){} // 匹配127.0.0.1
10.反斜线(\)
\a 警报
\b 退格
\c Escape 即<ESC>
\cx 匹配由x指明的控制字符
\f 匹配一个换页符
\n 匹配一个换行符
\r 匹配一个回车符
\t 匹配一个制表符
\v 匹配一个垂直制表符
\xhh 十六进制代码
\ddd 八进制代码
\d 任意一个十进制数字
\D 任意一个非十进制数字
\s 匹配任何空白字符,包括空格,制表符,换页符
\S 匹配任何非空白字符
\w 任何一个单词字符
\W 任何一个非单词字符
\b 单词定界符
\B 单词边界之外匹配
\A 匹配字符串起始位置
\Z 匹配字符串的末尾位置或字符串末尾的换行符之前的位置
\z 只匹配字符串的末尾,不考虑任何换行符
\G 从偏移字符的起始位置开始进行匹配,这个偏移地址与传递给preg_match()函数的偏移位置相同
11.圆括号字符(())
作用:
改变限定符()
(my|your)body,没有(),匹配的是my或yourbody
分组,{\.[0-9]{1,3}}{3},分组操作3次
12.反向引用
暂时没搞懂
就这样
2019-12-08 15:32:59
正则表达式(Regular Expression)入门的更多相关文章
- 正则表达式(Regular Expression, RegEx)学习入门
1. 概述 正则表达式(Regular Expression, RegEx)是一种匹配模式,描述的是一串文本的特征. 正如自然语言中高大.坚固等词语抽象出来描述事物特征一样,正则表达式就是字符的高度抽 ...
- Java基础-正则表达式(Regular Expression)语法规则简介
Java基础-正则表达式(Regular Expression)语法规则简介 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.正则表达式的概念 正则表达式(Regular Exp ...
- 正则表达式-Regular expression学习笔记
正则表达式 正则表达式(Regular expression)是一种符号表示法,被用来识别文本模式. 最近在学习正则表达式,今天整理一下其中的一些知识点 grep - 打印匹配行 grep 是个很强大 ...
- Python正则表达式Regular Expression基本用法
资料来源:http://blog.csdn.net/whycadi/article/details/2011046 直接从网上资料转载过来,作为自己的参考.这个写的很清楚.先拿来看看. 1.正则表 ...
- C#中【正则表达式regular expression】相关的知识
Regex System.Text.RegularExpressions.Regex regex应该是regular expression的缩写 https://msdn.microsoft ...
- java 正则表达式 -Regular Expression
正则表达式(Regular Expression),可以说就是一个字符构成的串,它定义了一个用来搜索匹配字符串的模式.正则表达式定义了字符串的模式,可以用来搜索.编辑或处理文本,不仅限于某一种语言(P ...
- Python -- 正则表达式 regular expression
正则表达式(regular expression) 根据其英文翻译,re模块 作用:用来匹配字符串. 在Python中,正则表达式是特殊的字符序列,检查一个字符串是否与某种模式匹配. 设计思想:用一 ...
- Python中的正则表达式regular expression
1 match = re.search(pat,str) If the search is successful, search() returns a match object or None o ...
- 正则表达式 Regular expression为学习助跑
这是一个Regular expression的铁路图(至少我现在是这么称呼的)的图形化界面帮助检验和理解我们所写的Regular expression是否正确. 1.官网 :https://regex ...
随机推荐
- LR静态存储/动态存储/指针变量脚本说明
在一次教程学习中,看到该知识点并记录了下来,希望与大家共同探讨学习. 一.静态存储与动态存储 静态存储变量通常是在变量定义时就分定存储单元并一直保持不变, 直至整个程序结束.动态存储变量是在程序执行过 ...
- art-template循环无法显示出数据
art-template循环遍历无法显示数据原因 1.语法问题:循环语句导致的问题 2.插件问题: 用标准语法时循环数据如果引入第一个插件,会导致数据显示不出来只有引入第二个插件才可循环出数据 用原生 ...
- Day 02 计算机的基本组成及工作原理
目录 计算机的构成 CPU 控制器 运算器 存储器 内存 外存 I/O (input & output) 输入设备 输出设备 什么是编程语言 什么是编程 为什么要编程 多核CPU 32位和64 ...
- 【MobX】390- MobX 入门教程(上)
点击上方"前端自习课"关注,学习起来~ 本文考虑到篇幅问题,将<MobX 入门教程>分成上.下两篇文章,方便阅读.分配安排: 一.MobX 介绍 首先看下官网介绍: ★ ...
- Java集合类框架的最佳实践?
根据应用的需要选择合适的集合对性能是非常重要的.如果一个集合的元素数量是固定的,而且我们能够提前知道固定的数量,那么就可以使用数组,而不是ArrayList. 每个集合都可以设置初始容量,如果我们提前 ...
- c++-多态和vptr指针
多态的原理 #define _CRT_SECURE_NO_WARNINGS #include <iostream> using namespace std; class Parent { ...
- springcloud 微服务分布式 框架源码 activiti工作流 前后分离
1.代码生成器: [正反双向](单表.主表.明细表.树形表,快速开发利器)freemaker模版技术 ,0个代码不用写,生成完整的一个模块,带页面.建表sql脚本.处理类.service等完整模块2. ...
- CentOS 7上的进程管理
一些杂乱的基础概念 程序是一种静态的文件,躺在磁盘上.而进程则是将程序运行起来放置于内存中.因此进程就是运行中的程序,是程序运行起来的一个实例.同一个程序可以运行为多个进程/实例. 进程之间有父子关系 ...
- linux I/O重定向及管道
一,I/O重定向 重定向正常输出 > :覆盖以存在文件的内容,很危险的操作 >>:如果文件已经存在,则是在原内容的最后追加. 可以禁止>的覆盖行为,使用set -C.只在当前会 ...
- 设置POP3/SMTP协议 手机绑定邮箱
例如设置企业邮箱 一.设置POP3/SMTP协议,意思是代收邮件致本地POP3接收邮件服务器:pop.qiye.qq.comSMTP发送邮件服务器:smtp.qiye.qq.com二.设置IMAP/S ...