正则表达式
Posted sundebao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式相关的知识,希望对你有一定的参考价值。
正则表达式
1.简单的介绍正则表达式
a) 正则表达式就是描述字符串排列模式的一种自定义语法规则
b) 如果可以使用字符串函数处理完成的任务,就不要使用正则表达式
c) 有一些复杂性的操作,只能用正则表达式来完成
d) 正则表达式也称为一种模式表达式
e) 正则表达式就是通过构建具有特定规则的模式,在与输入的字符串进行比较、分割、查找、替换等操作。
2.什么是正则表达式
a) 例子:’/<imgs+src=”.*?”/>/’
b) 乱七八糟的一堆字符堆砌在一起,神秘的符号,有奇特意义
3.和正则表达式相识的事物?
a) 乱/ 神秘 / 看不懂
女人的心 女人能看懂
医生的字 只有医院的人能看懂
道士的符 只有道士的看懂
正则表达式 只有程序猿能看懂
4、学习正则表达式可以做什么
a) 操作字符串是正则表达式唯一的作用
- 验证用户名长度是否合法
- 验证密码是否符合标准
- 验证邮箱规则
- 验证手机号
- 验证URL地址
- BBS编辑器
- QQ聊天表情 (字符串替换)
- 新闻采集器 小偷程序
5.看看正则的几个特点
a) 正则表达式也是一个字符串
b) 由具有特殊意义的字符组成的字符串
c) 具有一定编写规则,也是一种模式
d) 看做一种编程语言 是用一些特殊的字符,按照规则编写出来一个字符串,形成一种模式。
e) 如果正则表达式不和函数一起配合使用,则他就是一个字符串,没有任何意义,如果和函数一起配合使用,才能发挥正则表达式的作用。
6.php中提供了两套正则表达式函数库
a) Posix 扩展正则表达式 ereg开头
b) Perl 兼容正则表达式 preg开头
c) 推荐使用perl兼容正则表达式函数库 perl效率高
7.学习正则表达式时有两方面需要学习
a) 1.正则表达式的模式如何编写
b) 2.学习正则表达式的强大处理函数
8.正则表达式的语法(4部分)
a) 正则表达式的语法分为:
- 正则定界符
- 正则表达式中的原子
- 正则表达式的中的元字符(原子修正符)
- 正则白道上的模式修正符
9.正则表达式的定界符
正则定界符就是用来声明正则表达式边界的符号。
正则表达式常用的边界符是’/’,实际上任何非数字字母和‘’之外的字符都可以做正则表达式的边界符使用。
注意:
一个完整的正则表达式有两个边界符
1.一个是字符串类型的引号边界符
2.一个是正则表达式的边界符
10.正则表达式中的原子(原子:在化学界中最小的组成物质单位就是原子)
组成正则表达式的最小的单位就是原子
1.原子有哪些内容组成
所有可见的字符都是原子
大部分不可见字符也是原子,比如 这些转译字符也是原子
d 表示数字0-9之间任意一个字符
D 表示除了数字0-9之外的任意一个字符
s 匹配所有空白字符包括 空格、 中的任意一个
S 表示除了所有空白字符之外的任意一个
w 表示数字0-9大小写字母a-z以及下划线中任意一个
W 表示出了0-9A-Za-z_之外的任意一个
正则表达式中的元字符(原子修饰符)
[] 原子列表
表示在指定的字符中选取一个原子
[5-9]表示5,6,7,8,9连续的字符,允许缩写为开始字符-结束字符
[^]排除列表
[^4] 表示除了4之外的所有字符都可以使用(排除列表)
d [0-9]
D [^0-9]
w [0-9a-zA-Z_]
W [^0-9A-Za-z_]
s [ ]
S [^ ]
原子数量修饰符
? 表示前面的原子出现0次或者1次
+ 表示前面的原子出现1次或者多次
* 表示前面的原子出现0次一次或者多次
原子数量修饰列表
{m}表示前面的原子出现指定m次
{m,}表示前面原子最少出现m次
{m,n}表示前面的原子最少出现m次最多出现n次
+ {1,}
? {0,1}
* {0,}
允许出现大小写字母 最少6位 最多10
字符串边界修饰符
^ 表示以指定的字符开头的内容
$ 表示以指定的字符结尾的内容
注意:如果要使用^和$可以匹配每一行的开始和结束部分,需要使用后面学习的模式修正符m
| 选择修饰符
模式单元()
1.改变优先级
2.将多个原子视为一个原子(好处:可以使用原子数量修饰符)
3.将匹配到的括号内容占时存在内存中。
4.如果使用()仅仅为了模拟一个原子使用原子修饰符,那么可以在括号的开始处使用?:来解除存于内存的作用,提高效率
d{15}|d{18}|d{17}[xX] 身份证号
d+.d+.d+.d+ 1.1.1.1 IP地址
[a-zA-Z]+://[^s]* 网址
. 匹配任意一个原子 除 之外
模式修正符
i 忽略大小写
x 忽略正则表达式中的空白
s 使得.元字符可以匹配
m 视为多行处理 该模式下^和$可以匹配
S 加速匹配
U模式(必须记住) 改变贪婪模式
改变贪婪模式,默认是贪婪的,匹配最远的结束为止
我们还可以使用正则中.*?匹配任意字符的同时使用非贪婪模式。
注意:U是改变贪婪模式,如果程序是贪婪的,使用U后变为非贪婪模式,如果程序是非贪婪模式,使用U后变为贪婪模式。
正则表达式的函数
Preg_grep()//返回与模式匹配的数组单元
参数1:匹配的正则
参数2:要进行匹配的数组
参数3:可选参数,默认为false,如果设置为true,表示返回与模式相反的单元。
返回值:返回匹配到的内容。
Preg_match() 进行一次正则匹配 (适合查询有没有)
Param1:要进行匹配的正则
Param2:要匹配的字符串
Param3:可选参数,返回匹配到的数组
返回值:返回匹配的次数1,匹配失败0
Preg_match_all() 进行正则匹配 (适合查询有多少)
Param1:要进行匹配的正则
Param2:要匹配的字符串
Param3:可选参数,返回匹配到的数组
返回值:返回匹配的次数,匹配失败0
Preg_split() 用正则表达式分割字符串
Param1:正则表达式
Param2:要分割的字符串
返回值:返回分割后的数组
Preg_replace() 执行正则表达式替换
Param1,要匹配的正则表达式
Param2 要进行替换的内容
Param3,在哪里进行替换操作
返回值:返回替换后的内容
以上是关于正则表达式的主要内容,如果未能解决你的问题,请参考以下文章