第1章 初识正则表达式
正则表达式定义
- 正则表达式是一种字符串搜索和匹配的工具
正则表达式应用举例
- 手机输入法
- Windows文件搜索
- Linux列出文件命令
- 网站用户注册
第2章 正则表达式函数解析
PHP中常用的正则表达式函数
- $pattern = 正则表达式
- $subject = 匹配的目标函数
- preg_match($pattern, $subject)
- preg_match_all($pattern, $subject, array &$matches)
Code:
$pattern = ‘/[0-9]/’;
$subject = ‘weur3ui76as83s0tk9‘;
$m1 = $m2 = array();
$t1 = preg_match($pattern, $subject, $m1);
$t2 = preg_match_all($pattern, $subject, $m2);
show($m1);
echo ‘<hr />‘;
show($m2);
echo ‘<hr />‘;
show($t1. ‘||‘ .$t2);
- preg_replace($pattern, $replacement, $subject)
- preg_filter($pattern, $replacement, $subject)
Code:
$pattern = array(‘/[0123]/‘, ‘/[456]/‘, ‘/[789]/‘);
$subject = array(‘weu‘, ‘r3ui‘, ‘76as83‘, ‘s‘, ‘0tk9‘);
$replacement = array(‘万‘, ‘事‘, ‘屋‘);
$str1 = preg_replace($pattern, $replacement, $subject);
$str2 = preg_filter($pattern, $replacement, $subject);
show($str1);
echo ‘<hr />‘;
show($str2);
- preg_grep($pattern, array $input)
Code:
$pattern = ‘/[0-9]/‘;
$subject = array(‘weu‘, ‘r3ui‘, ‘76as83‘, ‘s‘, ‘0tk9‘);
$arr = preg_grep($pattern, array $input);
show($arr);
- preg_split($pattern, $subject)
Code:
$pattern = ‘/[0-9]/’;
$subject = ‘银2桑3, 3么么哒~‘;
$arr = preg_split($pattern, $subject);
show($arr);
- preg_quote($str)
Code:
$str = ‘qwer{asdf}[1234]‘;
$str = preg_quote($str);
show($str);
PHP正则表达式函数总结
- 都以preg_开头
- 除preg_quote函数外,第一个参数都是正则表达式
- preg_match - 表单炎症等
- preg_match_all - 非法词语过滤等
第3章 正则表达式基本语法
界定符
- 表示一个正则表达式的开始和结束
- /[0-9]/
正则表达式工具
原子
- 可见原子 - Unicode编码表中用键盘输出后肉眼可见的字符
- 有哪些?
- 标点 ; " _ ? . 等
- 英文字母数字 a-z, A-Z, 0-9
- 汉字、日文、阿拉伯文等其他语言文字
- ∑, ∈, ∮, ≌ 等数理化公式符号
- 其他可见字符
- 不可见原子 - Unicode编码表中用键盘输出后肉眼不可见的字符
- 有哪些?
- 换行符 \n
- 回车 \r
- 制表符 \t
- 空格
- 其他不可见符号
(ps: Unicode编码转换工具: http://tool.oschina.net/encode)
元字符
- 原子的筛选方式
- | 匹配两个或者多个分支选择
- [] 匹配方括号中的任意一个原子
- [^] 匹配除方括号中原子之外的任意字符
- 原子的集合
- . 匹配除换行符之外的任意字符
- \d 匹配任意一个十进制数,即[0-9]
- \D 匹配任意一个非十进制数,即[^0-9]
- \s 匹配一个不可见原子,即[\f\n\r\t\v]
- \S 匹配一个可见原子,即[^\f\n\r\t\v]
- \w 匹配任意一个数字、字母或下划线,即[0-9a-zA-Z_]
- \W 匹配任意非一个数字、字母或下划线,即[^0-9a-zA-Z_]
量词
- {n} 表示前面的原子恰好出现n次
- {n,} 表示前面的原子最少出现n次
- {n,m} 表示前面的原子最少出现n次,最多出现m次
- * 匹配0次、1次或者多次其之前的原子,即{0,}
- + 匹配1次或者多次其之前的原子,即{1,}
- ? 匹配0次或者1次其之前的原子,即{0,1}
边界控制与模式单元
- ^ 匹配字符串开始的位置
- $ 匹配字符串结尾的位置
- () 匹配其中的整体为一格原子