为了账号安全,请及时绑定邮箱和手机立即绑定

PHP 正则表达式基本语法及说明

标签:
PHP

   什么是正则表达式?简而言之 正则表达式是一种可以用于模式匹配和替换的强有力的工具,通过使用一系列的特殊字符构建匹配模式,然后匹配出相应的内容。

   学习正则表达式重要吗?我可以非常负责的告诉你:重要!!!这是博主的亲身经历过后的出来的惨烈的体验。在博主初期接触PHP程序时,一味的求快速学成。忽略了很多重要的东西,正则表达式就是其中之一,从而因为基础不牢固得到了许多的教训,这是后话,就不一一阐述了。在这里奉劝那些新学习PHP程序的同志们,千万不要看亲而跳过正则表达式,不然有的是你后悔的时候。

  好了,题外话不多说,现在开始说明一下正则表达式的基础,让自己也温故知新一下。

/*===============================以下是说明文========================================================================*/

1.定界符:顾名思义,界定某种东西的符号,这里是指包含你所写的表达式的特殊符号,可自定义,一般来说使用斜杠 “/”。

例子:"/Love/" 其中斜杠是为定界符,正则表达式一定是由相同两个定界符所包含住的,请谨记。


2.原子:什么是原子?它是构成正则表达式的最基础的部分。  

常用的原子有:

a-z,A-z,0-9,下划线,空格,换行符等等

例子:"/[a-z]/",这个正则则是匹配所有小写字母,"[]"的具体说明在后面有说明


小括号包含起来的单元复合:

例子:"/(abc)/",这里表示匹配的字符中一定要出现括号中的内容才能匹配成功,如 abc123能匹配成功 absssc123匹配失败


中括号包含起来的原子表:

例子:"/[a-z]/",这里表示要匹配的字符串中出现原子表中出现的任意内容,就能匹配成功 该示例就是匹配任意小写字母

     "/[^a-z]/",在原子表内使用“^”字符这里表示的是非的意思,该示例是匹配任意非小写字母的内容


转义字符:

\d 包含所有数字[0-9]
\D 除所有数字外[^0-9]
\w 包含所有英文字符[a-zA-Z_0-9]
\W 不包含所有英文字符[^a-zA-Z_0-9]
\s 包含空白区域如回车、换行、分页等[\f\n\r]

元字符:

* 匹配前一个内容的0次1次或者多次
.  可以把自己作为任何一个内容供其他字符匹配,空格和回车除外
+ 匹配前一个内容的1次或者多次
? 匹配前一个内容的0次或者1次
| 选择匹配类似PHP中的|(or的意思)(因为这个运算符是弱类型导致前面最为整体匹配);
^ 匹配字符串首部内容(注意这个符号在原子表和其他地方使用的区别)
$ 匹配字符串尾部内容
\b 匹配单词边界,边界可以是空格或者特殊符号
\B 匹配单词边界以外的内容
{m} 匹配前一个内容的重复次数为m次
{m,} 匹配前一个内容的重复的次数到大于等于m次
{m,n} 匹配前一个内容的重复次数m次到M次
() 合并整体匹配,并放入内存

具体作用这里不作详细示例,大家回去自己多多搭配尝试一下摸索一下,这样能把这些东西更好的记在自己的脑子里。



模式修正符

书写模式 : "/正则/模式修正府" 如:"/(asdasd)[0-9]+/iUs";
i 正则内容在匹配的时候不区分大小写
m 在匹配首内容或者尾内容时采用多行识别匹配 匹配每一行
S 将转义回车取消,是为了单行匹配如 . 匹配的时候
x 忽略正则中的空白
A 强制从头开始匹配
D 强制$匹配尾部无任何内容不能有回车或者空格\n
U 禁止贪婪匹配 只跟踪到最近的一个匹配符并结束,常用在采集程序的正则表达式


这则表达式运算顺序
() 内存处理 优先级最高
*?+{} 重复匹配内容其次
^$\b 边界处理第三
| 条件处理第四
最后是从左到右的运算顺序计算


正则表达式常用的函数

preg_match('正则表达式',字符串,结果数组)//单个匹配

preg_match_all('正则表达式',字符串,结果数组);//详细采集
preg_replace('正则表达式','要替换的内容','要替换的地方',替换的次数);//替换函数
preg_split("正则表达式","要分割的内容",(切割成多少个(可选)));//分割函数


最后说几句,现在网上有很多前辈们分享已经写好正则表达式出来,这是很好的事情,我们可以把那些正则表达式收集起来,但是最重要的一点就是,收集起来不是用了一次就算了,你需要去理解它,模仿它,最后把它变成自己的东西,要深深的记住一点,不是什么时候都可以找到完全符合自己要求的东西的,如果找不到而你又不理解这东西,那就完蛋了,而如果你理解了这东西的原理,完全可以根据网上类似的把符合自己要求的创造出来。


虽然我写这些东西是为了给自己储备一些东西随时可以用,但是仍希望我写的东西可以给大家带来小小的帮助。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
移动开发工程师
手记
粉丝
39
获赞与收藏
245

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消