正则表达式
普通字符
? -----代表前面字符出现一次或零次
*-----匹配出现0次及以上的字符
+-------匹配出现一次及以上的字符
{}------
{n} 表示其前面字符恰好出现n次
{n,} 表示其前面字符出现n次及以上
{n,m} 表示其前面的字符至少出现n次,最多出现m次
()-----将包裹起来的东西给看成一个整体
|----------或运算符
字符类
[]------代表要求匹配的字符只能取自他们(匹配方括号中的任意一个字符)
同时还能代表一些特殊的东东
eg.[a-z]代表所有小写字母,[A-Z]代表所有大写字母,[0-9]代表所有数字,[a-zA-Z]代表所有字母
^------就是除了的意思
eg.中括号^0-9中括号 代表所有的非数字字符(包跨换行符)
元字符(大多数都是以\开头)
\d-------数字字符,等于[0-9]
\D-------非数字字符
\w-------单词字符,就是所有的英文字母,数字加上下划线
\W-------非单词字符
\s--------空白符(Tab和换行符)
\S-------非空白字符
.-------代表任意字符,但不含换行符
^或\A------匹配行首
$或\Z------匹配行尾
如^a只会匹配行首的a
a$只会匹配行尾的a
高级概念
贪婪匹配
eg.会匹配从第一个t开始,直到最后一个t出现才结束的中间的内容。
懒惰匹配
在.*后面加上一个?即可
模式修正符
i-------匹配时不区分大小写
m--------多行匹配,如果目标字符串 中没有换行符, 或者模式中没有出现^或$, 设置这个修饰符不产生任何影响
s---------将匹配所有的字符包括换行符
U---------禁止贪婪匹配
tips
windows中回车键进行换行其实是两个字符完成的,即是\r\n两个字符完成
eg.
如果不加上\r*,则只会输出最后一个test
与正则表达式相关的函数
preg_match(参数一,参数二,参数三,参数4(一般不用填),参数5(一般不用填)):它在第一次匹配之后将会停止匹配
第一个参数:正则表达式
第二个参数:目标字符串
第三个参数(可选):放一个变量,存放匹配到的数据
第四个参数(可选):可以传PREG_OFFSET_CAPTURE,默认传的是0
第五个参数(可选):可以传一个值,来表示从目标字符串的哪个位置开始搜索(单位是字节)。
preg_match_all(参数):会一直匹配,直到结束,参数类型同上。
preg_replace(参数1,参数2,参数3,参数4)
第一个参数:正则表达式
第二个参数:要替换的字符串
第三个参数:目标字符串
参数4:替换的次数
$n
还可以传数组