比别人多一点志气,你就会多一份出息 [登录·注册]

吕滔博客

首页 开发 运维 工具 摄影

PHP中关于正则的一些小笔记

开发 memory 发布于June 27, 2017 标签: PHP

正则是很多程序员入门最头疼的,我之前也是
在2011年之前,当时看着正则完全就是蒙的,于是写正则这样的任务全部扔给了浪浪来做...
事过这么多年,正则越用越顺手了
于是简单的记录一下常用的

前言

1.界定符
2.原子
3.元字符
4.修正符

界定符

界定符正如其名,就是定一个边界,边界已内的就是正则表达示。
必须成对出现,有开始就有结束。不能用a-zA-Z0-9\
举些粟子:

/中间写正则/    正确
$中间写正则$    正确
%中间写正则%    正确
^中间写正则^    正确
@中间写正则@    正确
(中间写正则)    错误
A中间写正则A    错误

特别注意\是转义字符,如果在以后正则表达示里面需要匹配/,则是/\//

原子

原子说白了就是需要匹配的内容。一个成立的正则表达示当中必须最少要有一个原子。
所有可见不可见的字符就是原子
说明:我们见到的空格、回车、换行、0-9、A-Za-z、中文、标点符号、特殊符号全为原子。
这儿说下几个特殊标识的原子

\d    匹配一个0-9
\D    除了0-9以外的所有字符
\w    a-zA-Z0-9_
\W    除了0-9A-Za-z_以外的所有字符
\s    匹配所有空白字符\n \t \r 空格
\S    匹配所有非空白字符
[ ]    指定范围的原子

这几个必须要记住,最好达到默写级别。记忆的时候成对记忆,\d是匹配一个0-9,那么\D 就是除了0-9以外的所有字符。
上面这几个特殊的你要不嫌麻烦,等价如下

\w    [a-zA-Z0-9_]
\W    [^a-zA-Z0-9_]
\d    [0-9]
\D    [^0-9]
\s    [ \t\n\f\r]
\S    [^ \t\n\f\r]

元字符

在使用原子的时候,发现只能够匹配一个字符,可是要匹配多个字符就出现了问题。
这个时候,我们需要借助元字符来帮我们修饰原子,实现更多的功能
元字符及功能说明

*    是代表匹配前面的一个原子,匹配0次或者任意多次前面的字符。
+    匹配一次或多次前面的一个字符
?    前面的字符可有可无【可选】 有或没有
.    更标准一些应该把点算作原子。匹配除了\n以外的所有字符
|    或者。注:它的优先级最低了。
^    必须要以抑扬符之后的字符串开始
$    必须要以$之前的字符结尾
\b    词边界
\B    非边界
{m}    有且只能出现m次
{n,m}    可以出现n到m次
{m,}    至少m次,最大次数不限制
()    改变优先级或者将某个字符串视为一个整体,匹配到的数据取出来也可以使用它

修正符

写在界定符末尾,例如/\w+/s

i    模式中的字符将同时匹配大小写字母.简称:不区分大小写
m    字符串视为多行
s    将字符串视为单行,换行符作为普通字符.
x    将模式中的空白忽略.
A    强制仅从目标字符串的开头开始匹配.
D    模式中的美元元字符仅匹配目标字符串的结尾.
U    匹配最近的字符串.

例子后期慢慢加...

相关推荐

添加新评论

全部评论:仅有一条评论

  1. 君哥

    不错哟,蛮适用的

网站状态

  • 栏目分类:49个
  • 发布文章:1311篇
  • 用户评论:688条
  • 开博至今:3978天

正则速查

[abc] 匹配中括号中的单个字符,如a或b或c
[^abc] 匹配除了a、b、c等字符的其他单个字符
[a-z] 匹配一个字符范围,如a到z
[a-zA-Z] 匹配一个字符范围,如a-z 或 A-Z
^ 匹配行的开始
$ 匹配行的结束
\A 匹配一个字符串的开始
\z 匹配一个字符串的结束
. 匹配任意单个字符
\s 匹配空白字符,如空格,TAB
\S 匹配非空白字符
\d 匹配一个数字
\D 匹配非数字
\w 匹配一个字母
\W 匹配非字幕
\b 匹配字符边界
(...) 引用所有括号中的内容
(a|b) a或者b
a? 零个或多个a
a* 零个或多个a
a+ 1个或多个a
a{3} 3次重复的a
a{3,} 3次或3次以上重复的a
a{3,6} 3到6次重复的a

修正符

/g 查找所有可能的匹配
/i 不区分大小写
/m 多行匹配
/s 单行匹配
/x 忽略空白模式
/e 可执行模式,PHP专有
/A 强制从目标字符串开头匹配
/D 使用$限制结尾字符,则不允许结尾有换行
/U 只匹配最近的一个字符串;不重复匹配

最新回复

  • 券都有: 感谢分享
  • memory: 这是我3年前玩过一次,当时因为安装完后,发现日常办公还好,但是好...
  • sdf: 想问一下,激活工具激活后,后面会出现提示要再次重新激活吗?
  • memory: 你要用碗装我吗?还是要我把扔的扔进你碗里???!!! &^_^&
  • 薛才杰: 同感,快扔到我的碗里来。。。
  • memory: 要说明一下,在大陆及香港的云主机或VPS,都是不支持的。原因都懂...
  • 历史趣谈LishiQtan: 很好的文章,值得收藏
  • memory: 现在回头看,,,这么烂的代码,也是醉了.
  • memory: 有空试试apache的
  • 脚踏实地: rInfo数组是怎么来的
  • 朋友们: 我都是这么建站的
  • memory: 明眼人.
  • 上官元恒: $lunarInfo数组是怎么来的,这是重点
  • memory: 你知道的太多了...
  • yjl: 这个肯定解决的不是空间的问题,可能是复用的问题,有可能是“站群”的问题
  • Smithd994: Hello! This post could not be wr...
  • memory: controll文件assign ,然后模板文件中直接foreach