码迷,mamicode.com
首页 > 其他好文 > 详细

正则表达式

时间:2018-11-21 15:44:58      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:连续   手机   返回值   空白   地址   单元   引号   邮箱   数字   

正则表达式

1.简单的介绍正则表达式

a) 正则表达式就是描述字符串排列模式的一种自定义语法规则

b) 如果可以使用字符串函数处理完成的任务,就不要使用正则表达式

c) 有一些复杂性的操作,只能用正则表达式来完成

d) 正则表达式也称为一种模式表达式

e) 正则表达式就是通过构建具有特定规则的模式,在与输入的字符串进行比较、分割、查找、替换等操作。

2.什么是正则表达式

a) 例子:’/<img\s+src=\”.*?\”\/>/’

b) 乱七八糟的一堆字符堆砌在一起,神秘的符号,有奇特意义

3.和正则表达式相识的事物?

a) / 神秘 / 看不懂

 女人的心    女人能看懂

医生的字     只有医院的人能看懂

道士的符     只有道士的看懂

正则表达式   只有程序猿能看懂

 

4、学习正则表达式可以做什么

a) 操作字符串是正则表达式唯一的作用

  1. 验证用户名长度是否合法
  2. 验证密码是否符合标准
  3. 验证邮箱规则
  4. 验证手机号
  5. 验证URL地址
  6. BBS编辑器
  7. QQ聊天表情 (字符串替换)
  8. 新闻采集器    小偷程序

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) 正则表达式的语法分为:

  1. 正则定界符
  2. 正则表达式中的原子
  3. 正则表达式的中的元字符(原子修正符)
  4. 正则白道上的模式修正符

9.正则表达式的定界符

正则定界符就是用来声明正则表达式边界的符号。

正则表达式常用的边界符是’/’,实际上任何非数字字母和‘\’之外的字符都可以做正则表达式的边界符使用。

注意:

一个完整的正则表达式有两个边界符

1.一个是字符串类型的引号边界符

2.一个是正则表达式的边界符

 

10.正则表达式中的原子(原子:在化学界中最小的组成物质单位就是原子)

 组成正则表达式的最小的单位就是原子

 

1.原子有哪些内容组成

  所有可见的字符都是原子

大部分不可见字符也是原子,比如\n\r\t这些转译字符也是原子

\d  表示数字0-9之间任意一个字符

\D  表示除了数字0-9之外的任意一个字符

\s  匹配所有空白字符包括 空格、\n\r\t中的任意一个

\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   [ \n\r\t]

\S   [^ \n\r\t]

 

原子数量修饰符

? 表示前面的原子出现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]*   网址

 

. 匹配任意一个原子 除\n之外

 

模式修正符

 i   忽略大小写

 x  忽略正则表达式中的空白

s  使得.元字符可以匹配\n

m  视为多行处理  该模式下^和$可以匹配\n

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,在哪里进行替换操作

返回值:返回替换后的内容

 

正则表达式

标签:连续   手机   返回值   空白   地址   单元   引号   邮箱   数字   

原文地址:https://www.cnblogs.com/sundebao/p/9994278.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!