正则表达式学习笔记

一、定界符

定界符由一对相同的符号组成,可以是//,也可以是任意非字母、非数字、非反斜线、非空白字符 ,如@@,经常使用的分隔符是正斜线(/)、hash符号(#) 以及取反符号(~)。

$reg = '/\d/';

$reg = '@\d@';

$reg = '!!';

 

二、原子

原子是指任意一个字符,具体的原子表示如下:

\d 任意一个数字

\D 任意一个非数字

\w 字母、数字、下划线中的任意一个

\W 字母、数字、下划线外的任意一个

\s 任意一个空白(空格、换行符、换页符、回车符、字表符)

\S 任意一个非空白

. 点代表任意一个原子(注意有贪婪原则,这个在后面会有介绍,默认是不匹配换行,需要配合s模式修正符使用)

[] 自己定义一个原子,一个字符

自己定义原子:(中括号内的都是小原子,一个字符)

自己定义的原子放在一对中括号内[]

[a-zA-Z] 表示匹配任意一个大写或小写字母,注意是匹配个字母

[1234] 表示匹配1234中任意一个数字

自己定义原子时,^表示除了什么之外

[^a] 表示匹配除了a之外的

说明:在小括号内,所有想匹配的特殊字符都要使用\进行转义

 

三、元字符

用来修饰原子的,一般表示匹配几个原子或以什么原子开始或以什么原子结束

* 表示0个或1个或多个 {0,}

+ 表示1个或多个 {1,}

? 表示0个或1个 {0,1}

{n,m} 表示n到m个,包含边界

{n,} 表示n个或n个以上

| 或,表示两边的原子有一个出现即可,注意或的优先级最低[123|abc],表示匹配123abc中的任意一个原子,不是匹配123或abc,如果想匹配123或abc,需要将小原子变成大原子,(123)|(abc),注意一定不能在外面再加中括号,否则依据|优先级最低的原则,可以匹配到123或1 2 3中的任意一个

^ 以什么开头

$ 以什么结束

\b  是单词边界

\B      不是单词边界

() 

第一个作用,改变优先级;

第二个作用,将小原子变成大原子;(?:) 把括号只作为改变优先级,和变成大原子,没有子模式作用,取消子模式作用,如(?:abc)只是起匹配abc大原子的作用,不能起到子模式的作用

第三个作用,子模式,整个表达式是一个大的模式,小括号中是每个独立的子模式,(.*?)代表所有原子的子模式,并且这样可以防止贪婪匹配,在要匹配的原子后面加上一个?号即可取消贪婪匹配

第四个作用,反向引用,\1 引用第一个子模式,\2引用第二个子模式

        $n    在正则表达式外表示反向引用,n代表第几次匹配到的结果。

四、模式修正符号

1、模式修正符号写在定界符外,放在右边 '//i'   i不区分大小写

2、模式修正符,一个字符就是一个功能,可以组合使用

模式修正符号作用,可以修正正则表达式的解释,或扩充了正则表达式的功能

i 修正正则表达式,不区分大小写

m 视为多行,在使用^或$这两个符号时,每一行满足都可以

s 修正正则表达式中的.可以匹配换行符号了

x 修正正则表达式可以省略空白

(.*) (.+)

U 修改正则表达式取消贪婪模式,一般不用这个,用另一种方法,(.*?)在*后加一个?也可以防止贪婪

五、一些需要进行转义的符号

/

$

^

        $^*()+={}[]|/:<>.?'"

        

正则表达式的编写

 

1、就是一种语言,开发思想放进去

2、列需求(举自己的所能想到的所有例子,一点点合理复杂自己得到的例子)

分割 匹配 查找 替换

1、字条串处理函数(处理快,但有一些做不到)

2、正则表达式函数(功能强大,但效率低一些)

strstr();返回字符串

strpos();返回字符串首次出现的数字位置

preg_match('/\d/', $str, $match);

想要取到匹配到东西,需要使用子模式

注意:如果可以直接使用字符串处理的函数处理字符,就不要使用正则处理

正则表达式一般用于验证表单提交

preg_match_all() 与preg_grep()

匹配和查找

preg_match() 返回匹配的第一个字符串,不再向下继续找

preg_match_all() 返回所有匹配的内容

preg_grep() 在数组元素中进行匹配,返回找到的元素

分割

explode(); implode();

preg_split()

9:36 2017/3/17

替换 

str_replace()

strtoupper();

preg_replace() 在被替换的地方可以使用子模式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值