正则表达式
正则用来查找指定的字符串、匹配、替换指定的字符串
1、什么是正则表达式
正则表达式是一组描述字符串特征的模式,用于匹配一组字符串。
这种模式本身也是字符串只不过有一些规则和语法。
2、正则表达式用来解决字符串的搜索、替换、分隔
3、在PHP中学习正则表达式学习什么?
正则表达式的写法。
正则表达式的处理函数。
我们讲也是着重讲解正则表达式的写法。
他们之间的关系:写正则表达式用正则表达式的处理函数来进行处理。
注意:正则表达式如果没有正则的处理函数他就是普通字符串。
4、正则表达式由什么组成,应该怎么写。
组成:
1、定界符,告诉正则表达式从哪里开始到哪里结束,一般来说 /正则表达式的具体内容 /
注意:定界符一般为//,但是可以除了数字、字母、反斜线不可以作为定界符外,其他的都可以。
2、原子,最小的匹配单位,要找的字符,放在定界符中,每一个正则表达式最少有一个原子,因为最少要匹配一次,一个原子匹配一次
a)、普通的字符 0-9 a-z A-Z 多个字符就代表匹配多个。
b)、非打印字符
\r 回车
\n 换行
\t 制表符
c)、自定义原子表[]作为原子
[a-zA-Z0-9_]
[a-c]
d)、使用通用字符作为原子
\d 任意一个数字 0-9
\D 非数字
\w 任意一个字符 a-z A-Z 0-9 _
\W 任意一个非字
\s 空白 \t \r \n
\S 非空白
e)、转义后的元字符作为原子。
除了a-z A-Z 0-9 这些原子外其他的符号都加上\让他失去原来的意义。
3、元字符,修饰原子的功能和限定原子的功能(放在定界符中)
[] 原子表 用来指定一个范围。
^ 在原子表中的第一个位置出现表示排除。
* 代表前面的原子可以出现0次1次或多次。必须放在原子或原子表的后面。
+ 代表前面的原子可以出现1次或多次。
? 代表前面的原子可以出现0次或1次
{n},代表前面的原子只能出现n次。
{n,} 代表前面的原子最少出现n次最多出现的次数不限。
{n,m} 代表前面的原子最少出现n次最多出现m次
| 代表或的关系。 两边的原子只要有一个出现就可以。优先级是最低的。
. 代表任意一个字符
()的作用:
1、提高优先级
2、用来生成子模式。整个正则是一个大的模式,小括号就是大模式中的子模式
3、反向引用。
4、将一个小的原子变成一个大原子(mysql)+
mysql+ mysqlllll mysql mysqll
^ 写在正则表达式的最前面表示以x开始。必须写在正则表达式的最前面。
$ 表示以x结尾,必须写在正则表达式的最后面。
4、模式修正符
对正则进行修正用的单个符号(写在定界符的外面,写在最右边)
注意:一个符号代表一个功能,可以组合使用。
i:让正则表达式不区分大小写。正则表达式默认是区分大小写的
m:将匹配的字符串中的每个断行都当作新的一行来处理(默认的时候当作一行来处理的)
s:.默认的情况下不能匹配\r\n,加上s之后就能够匹配\r\n了。
x:修正正则表达式可以省略空白。
U:取消贪婪,在使用(.*)正则表达式比较贪婪,会匹配最后一个符合要求的内容。U可以让他们匹配第一个符合要求的内容。
但是不建议使用U,因为U正则表达式的修正符在PHP里面有但是在其他语言里面没有,我们使用(.*?)来取消贪婪。
正则表达式就是普通的字符串使用单引号或双引号包含起来。
写正则表达式的技巧:
1、正则表达式也是一种语言。
2、把你要匹配的正则表达式的各种情况,规则的样本都列出来。然后再写。
3、正则表达式匹配的越复杂,那么正则表达式写的越复杂。
4、能用字符串函数解决的就用字符串函数解决,不要用正则表达式。