php正则表达式学习笔记

一、正则元素:

1、原子(在正则表达式中至少包含一个)

2、元字符(有特殊功能的符号,如^$等)

3、模式修正符(提供额外功能的符号,如U i等)

4、常用函数


二、原子:

1、a-z A-Z _ 0-9 常见字符

2、(bbc) (php) 用圆括号包括起来的单元符号,表示bbc是一个整体,php是一个整体

3、[bbc]用方括号括起来的,表示只要有一个b或者一个c就可以匹配成功

4、[^bbc],[^]表示排除或者相反的内容,表示除b和c外的匹配成功

5、转义字符,\d表示所有数字即[0-9],\B表示除所有字母外的元素即[^0-9],\w表示包含所有英文字母即[a-zA-Z],\s表示空白区域包含回车、换行、分页等即[\f\n\r]


三,php正则匹配

正则匹配是一个强大的文本处理工具,正则匹配不仅仅在php上有应用,几乎在所有语言中也是通用的,php正则表达式主要提供以下两种

1、perg_match:以perl为基础,匹配函数为perg_match(匹配模式, 需要匹配的文本, 存放结果的数组),perg_match中匹配模式以/开始和以/结束,或者是以#开始和结束,例子:

if(perg_match('/php/', 'abgdsabakphp', $arr)) {

echo '匹配成功,结果为:'.$arr[0];

} else {

echo '匹配不成功";

}

运行结果是:匹配成功,结果为:php


2、ereg:以posix为基础,函数和上述相同,匹配模式不用以/开始和结束,基本没有太多的差别,而且这个效率低一些,官方也不推荐使用,平时使用以上面为主


三、元字符

* 前一个内容出现零次、一次和多次,例如/0*/匹配成功10, 100, 1

. 可以代表任何的字符,不包含换行回车换页符,例如(.*)可以匹配任何个字符

+前一个内容出现一次或多次,跟*的区别是没有零次,/0?/匹配成功10,对1匹配不成功

? 前一个内容出现零次或者一次

| 跟php代码中的|类似,表示两边只要有一边匹配成功即匹配成功,把两边当成一个整体来对待,功能上相当于两边都加了圆括号,例如/aac|bbc/匹配成功xxxaacxx,或者xxxbbcxx

^ 出现在字符串首部才匹配成功,如^a匹配成功aaaa,匹配不成功baaa

$ 出现在字符串尾部才匹配成功,如a$匹配成功bbbba,匹配不成功aaaab

\b 匹配单词边界,/\bis\b/ This is xxx.匹配成功,空格is空格

\B 除单词边界外的内容

{m} 前一个内容出现m次,/a{2}/,相当于/aa/,匹配成功bbaabb,匹配不成功bbabb

{m,} 前一个内容出现m或者大于m次

{m,n} 前一个内容出现m到n次

() 合拼整体,放入内存,可以用\1\2\3来调用之前()中的内容,如/(a)b\1/可以匹配成功aba


四、运算顺序

从左到右,()最高,*#?+{}第二,^$\b边界运算符第三,|第四


五、模式修正符

使用,/aaa/修正符

i 不区分大小写,例如/[a-zA-Z]/作用等于/[a-z]/i

m 多行匹配

S 将转义回车取消

x 忽略正则中的空格,如/p p/x作用等于/pp/

A 强制从头开始匹配

P 强制匹配尾部

U 禁止贪婪匹配,只追踪到最近的一个匹配符结束


六、php常用正则函数

preg_match 上面有具体的介绍

preg_match_all

preg_replace 跟str_replace类似,不过以正则来代替匹配的需查找的字符

preg_split 跟explode类似,以正则来代替分隔符


七、正则学习比较困难,很多匹配的模式在网上也有,正则的效率要低于str函数,简单大量的优先考虑str函数,正则是非常强大的工具,特别是在进行数据采集和处理转换的时候

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值