六、正则表达式
-
正则表达式语法规则
- 由普通字符和元字符组成的特殊字符串
- 普通字符(如:
a ~ z、A ~ Z、0 ~ 9、'、"
) - 元字符(如:+、*、?、\d 等)
- 详细元字符:https://www.runoob.com/regexp/regexp-metachar.html
- 普通字符(如:
- 定界符:一般用正斜线
/
作为定界符,除了字母、数字、反斜线之外的字符都可以作为定界符 preg_match_all
:执行一个全局正则表达式匹配- preg_match_all ( string
$pattern
, string$subject
[, array&$matches
[, int$flags
=PREG_PATTERN_ORDER
[, int$offset
= 0 ]]] ) : int - 搜索
subject
中所有匹配pattern
给定正则表达式 的匹配结果并且将它们以flag
指定顺序输出到matches
中.
- preg_match_all ( string
.
和*
配合默认情况下是贪婪匹配(尽可能的多去匹配字符),在.*
后面加一个?
可以解决贪婪匹配的问题。
- 由普通字符和元字符组成的特殊字符串
-
模式修正符
-
模式修正符是在正则表达式的定界符之后使用的,可以调整正则表达式的解释,拓展正则表达式在匹配、替换等操作时的某些功能,增强正则表达式的处理能力。
-
i
表示在和模式进行匹配进不区分大小写 -
m
将模式视为多行,使用^
和$
表示任何一行都可以以正则表达式开始或结束。使用条件是,目标字符串中必须出现换行符\n
,正则表达式中要出现^
和$
这两个字符。<?php $pattern = "/^test$/m"; $str = "test\ntest"; preg_match_all($pattern, $str, $arr); var_dump($arr); ?>
s
如果没有使用这个模式修正符号,元字符中的"."默认不能表示换行符号,将字符串视为单行x
表示模式中的空白忽略不计e
正则表达式必须使用在preg_replace替换字符串的函数中时才可以使用(讲这个函数时再说)A
以模式字符串开头,相当于元字符^Z
以模式字符串结尾,相当于元字符$U
正则表达式的特点:就是比较“贪婪”,使用该模式修正符可以取消贪婪模式
-
-
与正则表达式配合的函数
-
preg_match()
:执行匹配正则表达式-
搜索
subject
与pattern
给定的正则表达式的一个匹配,返回值为 0 或 1 ,preg_match()
在第一次匹配之后将会停止搜索。 -
参数说明:
第一个参数:正则表达式
第二个参数:目标字符串
第三个参数(可选):放一个变量,执行完成之后,里面会有匹配到的部分以及一些数据。
第四个参数(可选):可以传PREG_OFFSET_CAPTURE进入(那么第三个参数那个变量里面的数据就会有匹配到的部分的偏移值),默认传值为0
第五个参数(可选):可以传一个值,来表示从目标字符串的哪个位置开始搜索(单位是字节)
-
-
preg_match_all()
:执行一个全局正则表达式匹配 -
preg_replace()
:执行一个正则表达式的搜索和替换-
preg_replace (mixed
$pattern
, mixed$replacement
,mixed$subject
[, int$limit
= -1 [, int&$count
]] ) : mixed -
搜索
subject
中匹配pattern
的部分, 以replacement
进行替换。 -
参数说明
第一个参数:正则表达式
第二个参数:要替换成的字符串
第三个参数:目标字符串
第四个参数(可选):默认是 -1,就是替换所有符合特征的部分
第五个参数(可选):可以放一个变量 -
注意:可以传数组
-
-