笔记之 --- 正则表达式
正则表达式
正则表达式:就是描述字符串排列模式的一种自定义语法规则
如果可以使用字符串处理函数完成的任务,就不要使用正则;有一些复杂的操作,只能正则完成。
正则表达式也称为一种模式表达式
正则表达式
就是通过构建具有特定规则的模式
,与输入的字符信息比较,再进行分割、匹配、查找、替换等工作。
js
// 这是一个正则表达式
$regex = '/\<img\s*src=\".*?\/\>/'
- 正则表达式也是一个字符串
- 由具有特殊意义的字符组成的字符串
- 具有一点编写规则,也是一种模式
- 看作一种编程语言(是由一些特殊字符,按规则编写出一个字符串,形成一种模式——正则表达式)
注意:如果正则表达式不和函数一起使用,则它就是一个字符串,将正则表达式放到某个函数中使用,才能发挥出正则表达式的作用.
语法
/\<img\s*src=\".*?\/\>/iu
定界符号
-
字母、数字和反斜线
\
以外的任何字符都可以为定界符号; -
||
、//
、{}
、!!
; -
如果没有特殊需要,我们都使用正斜线
//
作为正则表达式的定界符号。
原子
注意:原子
是正则表达式的最基本组成单位,而且必须至少要包含一个原子。
只要一个正则表达式可以单独使用的字符,就是原子
-
所有打印(可以在屏幕上输出的字符串)和非打印字符(看不到的,如回车、空格);
-
.
、*
、+
、?
、(
、<
、>
如果想使用有意义的字条作为原子则需要用反斜线\
来转义; -
在正则表达式中可以直接使用一些代表范围的原子:
\d:表式任意一个十进制的数字
\D:表示任意一个除了数字之外的字符
\s:表示任意一个空白字符, 空格.\n\r\t\f
\S:表示任意一个非空白字符
\w : 表示任意一个字 a-z和A-Z和0-9和_
\W : 表示任意一个非字 除了\w表示的 -
自己定义一个原子表
[]
,可以匹配方括号中的任何一个原子[a-z5-8]
[^] 表示取反,就是除了原子表中的原子,都可以表示
元字符
元字符是一种特殊的字符,是用来修饰原子用的,不可以单独出现
-
*
:表示其前的原子可以出现0次、1次或多次 -
+
:表示其前的原子可以出现1次或多次,但最少要有一个 -
?
:表示其前面的原子可以出现0次或1次,要么有,要么没有 -
{}
:用于自己前面原子出现的次数{m}
表示最少出现m
次;{m,n}
表示最少m
次,最多n
次。 -
.
:默认情况下,表示除换行符以外的任意一个字符 -
^
:直接在一个正则表达式的第一个字符出现,则表示必须以这个正则表达式开始 -
$
:直接在一个正则表达式的最后一个字符出现,则表示必须以这个正则表达结尾 -
|
:表示或的关系,它的优先级是最低的,最后才考虑 -
\b
:表示一个边界 -
\B
:表示一个非边界 -
()
:1、作为大原子使用
2、改变优先级,加上括号可以提高优先级
3、作为子模式使用,正则表达式不光对一个字符串匹配一次,全部匹配作为一个大模式,放到数组里的第一个元素中,每个()是一个子模式按顺序放到数组中
4、可以取消子模式,就将()作为大原子或改变优先级使用,比如:(?:)
5、反向引用,可以在模式中直接将子模式取出来,再作为正则表达式模式的一部分
模式修正符号
-
就是几个字母;
-
可以一次使用一个,每一个具有一定的意义,也可以连续使用多个;
-
是对整个正则表达式调优使用的,也可以说是对正则表达式功能的拓展
i:表示在和模式进行匹配时不区分大小写。
m:默认情况,将字符串视为一行,加上m后则视为多行。
s:如果没有使用这个模式修改符号时,元字符中的".“默认不能表示换行符号,将字符串视为单行。
x:表示模式中空白忽略不计。
e:正则表达式必须使用在preg_replace替换字符串中的函数中时才可以使用。
U:正则表达式的特点:就是比较"贪婪”,用U可以取消这种贪婪模式。
函数
具体使用方法见手册!!!
-
preg_filter
执行一个正则表达式搜索和替换
-
preg_grep
返回匹配模式的数组条目
-
preg_last_error
返回最后一个PCRE正则执行产生的错误代码
-
preg_match
执行一个正则表达式匹配
-
preg_match_all
执行一个全局正则表达式匹配
-
preg_quote
转义正则表达式字符
-
preg_replace
执行一个正则表达式的搜索和替换
-
preg_replace_callback
执行一个正则表达式搜索并且使用一个回调进行替换
-
preg_split
通过一个正则表达式分隔字符串