1.正则表达式是用于匹配的字符串
2.使用PCRE库
3.四部分组成:定界符、原子、元字符、模式修正符
$str="aaa1aa2aa333aaaa";
$reg="/\d/";
echo preg_replace($reg,"#",$str);
print_r preg_split($reg,$str);
if(preg_match($reg,$str,$arr)){
print_r($arr);
}else{
echo "没匹配上";
}
4.原子
要点
a.打印字符(键盘打出的字符)/非打印字符(回车等)
b.打印字符除了字母数字下划线等,其他最好加转义
$ren="/\n/";//匹配回车
c.通用:\d任意一个数字,\D任意一个非数字,\w任意一个字(a-z A-Z 0-9 _),\W任意一个非字,\s空白(回车TAB空格),\S非空白
d.自定义原子表:[12348][^a-zA-Z]
e.(.)匹配所有
5.元字符
a.*:修饰前面的原子可以出现任意次
b.+:修饰前面的原子至少出现一次
c.?:修饰前面的原子可以出现0或1次
d.{m}:修饰前面的原子只能出现m次
e.{m,n}:修饰前面的原子出现次数2-5闭区间内
f.{m,}:修饰前面的原子至少出现m次
g.|:两边的原子只要出现一个即可,优先级最低
$reg="/abc|efg/";//abc或efg,而非c或e,因为优先级最低
h.^或\A:原子必须以某字符开始,写在正则表达式的最前面
i.$或\Z:原子必须以某字符结束,写在正则表达式的最后面
j.\b:匹配单词边界;\B:匹配除单词边界以外的部分(所谓边界即空白,单词哪边有空白用b,否则B)
k.():
(1)改变优先级
(2)将小原子变成大原子,如下:
$reg="/(abc)*/";//abc可以出现多次,而非只有c
(3)子模式:整个表达式是大模式,()内是独立子模式,只想使用括号前两个作用,可以(?:)
(4)反向引用:\1引用第一个子模式
6.模式修正符
a.写在定界符右边,可以组合使用,修正正则表达式的解释或扩充了功能
(1)i:不区分大小写
(2)m:视为多行,如:每行开始可匹配^,结尾$
(3)s:.可以匹配换行符(.默认不匹配换行符)
(4)x:忽略正则表达式中空白,待匹配字符串不能空白了
(5)e:
(6)U:取消贪婪模式,由于与其他语言不兼容,建议不用,而使用.*?或.+?取消贪婪
7.正则表达式的编写(具体详见下一篇:《正则表达式与字符串操作函数》)
a.正则表达式是一种算法/语言
b.列需求,一条条满足
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。