正则表达式三句话
a.找什么
b.从哪找
c.找几个
①如果正则表达式不和函数一起使用,就纯粹是一个字符串,只有和函数一起使用才发挥他真实的威力
②语法:
例:”/\<img\s*src=\”.*?\”\/\>/iu”
A.定界符号/ /(上例中的符号)
B.weixin接口 在哪
除了字母、数字和正斜杠\以外的任何字符都可以为定界符号
没有特殊需要我们都是用正斜线为正则表达式的定界符号
C.原子img \s
注意:原子是正则表达式的最基本的组成单位,而且必须至少要包含一个原子
只要一个正则表达式可以独立使用的字符,就是原子
1.所有打印(所有可以在屏幕上输出的字符串)和非打印字符(看不到的)
2..*+?(<>如果所有有意义的字符,想作为原子使用,通通使用“\”转义字符转义 “\”转义字符可以将有意义的字符转成没意义的字符,还可以将没意义的字符转成有意义的字符
3.在正则表达式中可以直接使用一些代表范围的原子
\d 表示一个任意的十进制数字
\D 表示任意一个除数字之外的字符
\s 表示任意一个空白字符
\S 表示任意一个非空白字符
\w 表示任意一个字 a-z A-Z0-9
\W 表示任意一个非字 a-z A-Z0-9
4.自定义一个原子表[],可以匹配括号中的任何一个原子
[^]表示取反的意思,例如[^a-z]表示除a-z以外的数
D.元字符 * ?
元字符是一种特殊的字符,是用来修饰原子用的,不可以单独出现
* 表示其前的字符可以出现0次,1次或多次
+ 表示其前的字符可以出现1次或多次
? 表示其前的原子可以出现0次或1次
{} 用于定义前面原子出现的次数,{m} m表示一个整数,{5}表示前面的原子出现5次,{m,n}表示前面出现的原子最少出现m次,最多出现n次,{m,}表示前面的字符最少出现m次
. 默认情况下,表示除换行符外任意一个字符
^ 直接在一个正则表达式的第一个字符出现,则表达必须以这个正则表达式开始
$ 直接在一个正则表达式的最后一个字符出现,则表达必须以这个正则表达式结束
| 表示或的关系,它的优先级号是最低的,最后考虑它的功能
() A.作为大原子使用
B.还可以改变优先级
C.还可以作为子模式使用(以括号内的正则表达式所匹配到的结果放入其他数组元素中去)。有的时候你想用作改变优先级却不想当作子模式来使用,这在(后加?:
D.还可以在模式中把子模式取出来,再作为正则表达式模式的一部分,遇到替换函数如prag_replace函数中,可以将子模式取出,在被替换的字符串中使用。如果想把子模式取出来可以用 \1 表示把第一个子模式取出来 需要注意的是看清楚是在单引号还是双引号中使用,如果在双引号中使用则需要再加一个\表转义
\b 表示一个边界
\B 表示一个非边界
E.模式修正符号i u
“//模式修正符”
1.就是几个字母
2.可以一次使用一个,每一个具有一定的意义,也可以连续使用多个
3.是对整个正则表达式调优使用,也可以说是对正则表达式功能的扩展
i 表示在和模式进行匹配时不区分大小写
m 默认情况,将字符视为一行 ^ $ 视为多行后,任何一行都可以以正则开始或结束
s 如果没有使用这个模式修正符号时,元字符中的“.”默认不能表示换行符号,将字符串视为单行
x 表示模式中的空白忽略不计
u 正则表达式有个特点---贪婪,这个可以用来取消这个贪婪模式
注意:有的时候匹配到的正则表达式与输出的不尽相同,那是因为echo函数会把一部分转义掉,此时在要输出的内容两头加上<xmp>标签就可以看到被转义的字符了
PHP中与perl兼容的正则处理函数