一个正则表达式主要由以下几部分组成的:原子,元字符,定界符,模式修正符号
如:”/\<img\s*src=\".*?\"\/\>/iu”
原子: ims \s
元字符:* ?
模式修正符号: i u
定界符号:/ /
注意:
① 定界符:除了字母,数字和正斜线\以外的任何字符都可以是定界符号,如# #,| |,{ }等
② 元字符:是一种特殊的字符,是用来修饰原子用到,不可以单独出现
+:表示重复匹配其前面的原子一次或多次
?:表示重复匹配其前面的原子0次或一次
*:表示重复匹配其前面的原子0次或多次
{}:可以自定义前面原子出现的次数:
{n}表示重复匹配其前面的原子n次
{n,m}表示重复匹配其前面的原子n到m次,包括n和m
{n,}表示重复匹配其前面的原子n次或无限次
. :匹配除换行符以外的任意字符
^:匹配字符串的开始
$:匹配字符处的结束
|:表示或的关系,它的优先级别是最低的,最后考虑他的功能
\b:匹配单词的分解处,单词是由空格,标点符号或者换行符来分隔的
\B:匹配不是单词开头或结束的位置,如:/\Bone\b/ 表示one的左边不是边界,one的右边是单词边界(如空格,标点符号或换行符)
():重点
一:作为大原子使用:如/(test)+/ 表示匹配单词test至少一次
二:改变优先级,加上括号可以提高优先级
三:作为子模式使用
四:反向引用,可以在正则模式中直接将子模式取出来,作为正则表达式模式的一部分,如果是在正则表达式像替换函数preg_replace函数中,可以将子模式去除,在被替换的字符串中使用。
\1:取第一个子模式
\n:取第n个子模式
注意:单双引号的区别,如”\\1”等价于‘\1’
③ 原子:原子是正则表达式的最基本的组成单位,而且必须至少要包含一个原子,只要一个正则表达式可以单独使用的字符,就是原子
a) 元字符如果想做为原子使用,则必须使用转义字符“\”进行转义,如:\.,\*,\?等等
b) 转义字符除了可以将有意义的字符转成没意义的字符,还可以将没意义的字符转成有意义的字符,如:
\d ,\w,\s等等
. |
匹配除换行符以外的任意字符 |
\w |
匹配字母或数字或下划线或汉字 [A-Za-z0-9_] |
\s |
匹配任意的空白符 如:空格,\n\r\t\f等等 |
\d |
匹配数字 [0-9] |
\b |
匹配单词的开始或结束 |
^ |
匹配字符串的开始 |
$ |
匹配字符串的结束 |
c) 可以自己定义一个原子表,用来匹配方括号中的任意一个原子
[a-z1-3]
[^A-Z]表示取反,用来匹配除了原子表中的原子意外的字符(^必须在[ ]内的第一个字符处出现),而且取反字符集可以匹配回车换行符