正则表达式
正则表达式是一种字符串搜索工具和匹配工具
Php常用的正则表达式函数如下:
Preg_match($pattern,$subject) 表单验证等
Preg_match_all($pattern,$subject,array&$matches)
Preg_replace($pattern,$replacement,$subject) 非法词语过滤等
Preg_filter($pattern,$replacement,$subject)
Preg_grep($pattern,array,$input)
Preg_split($pattern,$subject)
Preg_quote($str)
$pattern=正则表达式
$subject=匹配的目标数据
正则表达式基本语法
界定符
$pattern=’/[0-9]/’;
#[0-9]#
{[0-9]}
原子
- 可见原子
Unicode 编码表中用键盘输出后肉眼可见的字符
有哪些?
标点:“_?.等等
--英文字母数字 a-z, A-Z,0-9
--汉字、日文、阿拉伯文等其他语言文字
--数理化公式符号
--其他可见字符
- 不可见原子
换行符\n
回车\r
制表符\t
空格
其他不可见符号
量词
{n} 表示其前面的原子恰好出现n次
{n,} 表示其前面的原子最少出现n次
{n,m}表示其前面的原子最少出现n次,最少出现m次
*匹配 0次、1次或者多次其之前的原子,即{0,}
+ 匹配1次或者多次其之前的原子,即{1,}
? 匹配0次或者1次其之前的原子,即{0,1}
边界控制
^ 匹配字符串开始的位置
$ 匹配字符串结尾的位置
()匹配其中的整体为一个原子
模式单元
修正模式: 默认为贪婪模式 ,懒惰模式 实在后面加个大写的U 例如 /123456/U
常见的修正模式
U:懒惰匹配
u:贪婪匹配
i:忽略英文字母大小写
x:忽略空白(回车,空格等)
s 让元字符. 匹配包括换行符在内的所有字符
Regexpl正则调试工具
匹配中文时,为避免编码格式不同产生的错位,建议先将中文转换成Unicode编码
元字符
原子的筛选方式
| 匹配两个或者多个
[]匹配方括号中的任意一个原子
[^]匹配除方括号中的原子之外的任意字符
元字符
原子的集合
匹配除换行符之外的任意字符
. 除了换行符之外的任意字符
\d 匹配任意一个十进制数字 ,即[0-9]
\D 匹配任意一个非十进制数字,即[^0-9]
\s 匹配一个不可见原子,即[\f\n\r\t\v]
\S 匹配一个可见原子,即[^\f\n\r\t\v]
\w 匹配任意一个数字、字母或下划线,即[0-9a-zA-Z]
w:匹配包括下划线的任何单词字符。类似但不等价于“[A-Za-z0-9_]”,这里的"单词"字符使用Unicode字符集。
\W:匹配任何非单词字符。等价于“[^A-Za-z0-9_]”。
如果用re.sub(r'[_|\W]', '', text) 会除掉所有的非单词或者下划线"_",
如果用re.sub(r'[_|\w]', 'x', text),会用‘x'替换所有的'_'和单词字符
常见的正则表达式
.+ 非空
1(3|4|5|7|8)\d{9} 匹配*的手机号
^\w+(\.\w+)*@\w+(\.\w+)+$ 验证邮箱的
^(https?://)?(\w+\.)+[a-zA-Z]+$ 网址的
山寨Smarty模板引擎的开发
模板引擎的工作原理
获取模板源文件
编译模板(正则替换)
输出给用户
仿smarty简易模板引擎,在一个标准的PHP系统中,模板引擎肯定是要有的,便于前端工程师和后端工程师把工作分开来,而且前端工程师不需要懂后端的代码。
在线调试工具
http://cs.smu.ca/~porter/csc/355/regexpal/
?: 是 不想被捕获的时候使用 可以提高程序执行速度