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)