grep:最初是ED编辑器中的一条命令,用来显示特定文件中的内容,后来发展成一个独立的工具 egrep:表示“扩展的grep” POSIX:可移植操作系统接口,是一系列的标准,确保了操作系统之间的可移植性 Perl:实际抽取与汇报语言 PCRE:兼容正则表达式的一套正则引擎
PHP中需要在正则表达式的前后加上定界符"/" preg_match(正则表达式,被搜索的字符串[,保存匹配结果得数组]) 匹配结果只有一个 preg_match_all():保存所有的匹配结果
一、元字符 1.行定位符 ^:表示行的开始 $:表示行的结束 eg:?? ?^tm ?表示以tm开头? ?? ?tm$ ?表示以tm结尾 ?? ?tm ? 表示任意位置
2.单词分界符 \b:表示要查找的字串是一个完整的单词 \B:表示要查找的字串是不是一个完整单词,而是单词或字串的一部分 eg:?? ?\btm\b 表示匹配的是单词tm ?
3.字符类 []:表示只要匹配字符出现在方括号内,即可表示匹配成功 一个方括号只能匹配一个字符 eg:?? ?[tT][mM] 表示匹配tm的所有写法 POSIX风格的预定义字符类 [:digit:] ? 十进制数字集合,等同于[0123456789] [[:alnum:]] ?字母和数字集合,等同于[a-zA-Z0-9] [[:alpha:]] ?字母集合,等同于[a-zA-Z] [[:upper:]] ?大写字母集合,[A-Z] [[:lower:]] ?小写字母集合,[a-z]
4.选择字符 |:表示“或” eg:?? ?T|tm|M
5.连字符 -:表示字符的范围
6.排除字符 [^]:表示出现在括号内的字符为不匹配的字符
7.限定符 ?:匹配前面的字符零次或一次 ?? ?colou?r ===>color,colour +:匹配前面的字符一次或多次 ?? ?go+gle ?==> gogle,google,gooogle,gooo....ogle *:匹配前面的字符零次或多次 ?? ?go*gle ==> ggle,google,gooo...ogle {n}:匹配前面的字符N次 ?? ?go{3}gle ? ==>gooogle {n,}:匹配前面的字符最少N次 ?? ?go{2,}gle ? ==>google,goo...ogle {n,m}:匹配前面的字符最少n次,最多m次 ?? ?go{2,4}gle ?==>google,gooogle,goooogle
8.点号符号 .:表示除了换行符以外的任意一个字符 eg:?? ?^s.t$ ? ===>sit ?set ?... eg:?? ?匹配一个单词,第一个字母为r,第三个字母为s,最后一个字母为t ?? ?^r.s.*t$
9.转义字符 \ eg:?? ?匹配类似于127.0.0.1格式的IP地址 ?? ?[0-9]{1,3}(\.[0-9]{1,3}){3}
预定义字符集 \d:任意一个十进制数字 \D:任意一个非十进制数字 \w:任意一个单词字符,相当于[a-zA-Z0-9] \W:任意一个非单词字符
10.括号字符 (1)改变限定符的作用范围 (2)分组
11.模式修饰符 i:忽略大小写 m:多文本模式 s:单文本模式 x:忽略空白字符 既可以写在正则表达式的外面,也可以写在表达式内。 eg: ?/tm/i ? ? (?i)tm(?-i) ? ?(?i:tm) ?
|