正则表达式:
描述了一类字符串的特征,通过这个特征与特定的函数配合,对其他的字符串进行匹配、查找、替换及分割操作
这类字符串的特征是由一个或多个以下两种组成的一个字符串
1)普通字符(比如 a到 z)
2)元字符(有特殊功能的字符,比如 *, +,?...)
例如: '/a/', a 是普通字符,/ 是界定符,表示正则表达式的开始或结束,'/a/'就是一个正则表达式
pre_match_all( ) 函数:按指定的正则表达式,在给定的字符串中进行搜索,匹配到符合特征的部分取出来
$pattern='/test/'; //正则表达式
$str='abctest';
var_dump(preg_match_all($pattern,$str,$arr));//拿着$pattern特征去$str里面找
var_dump($arr);
//int 1
//array (size=1)
// 0 =>
// array (size=1)
// 0 => string 'test' (length=4)
定界符:
我们一般习惯使用正斜线"/"作为定界符,
当然除了字母,数字和反斜线以外的字符都可以作为定界符
比如,#,!,{ }, |
定界符放在正则表达式的起始位置,前后一致
我们一般习惯用 "/"作为定界符
普通字符:
比如,a~z, A~Z,0~9,双引号,单引号,他们没有特殊的含义
元字符
在正则表达式中有特殊含义的字符
1)\d:代表0~9中任意一个数
$pattern='/t\dst/';
$str='abct3sts';
var_dump(preg_match_all($pattern,$str,$arr));
var_dump($arr);
//int 1
//array (size=1)
// 0 =>
// array (size=1)
// 0 => string 't3st' (length=4)
2)\D:代表除了0~9之外的任意一个字符
$pattern='/t\Dst/';
$str='abct@sts';
var_dump(preg_match_all($pattern,$str,$arr));
var_dump($arr);
//int 1
//array (size=1)
// 0 =>
// array (size=1)
// 0 => string 't@st' (length=4)
3)\s:匹配任意一个空白字符,比如换页符、换行符(\n)、回车符、制表符、垂直制表符
$pattern='/t\sst/';
$str="abct sts";
var_dump(preg_match_all($pattern,$str,$arr));
var_dump($arr);
//int 1
//array (size=1)
// 0 =>
// array (size=1)
// 0 => string 't st' (length=4)
4)\S:匹配除空白字符以外的任何一个字符
5)\w:匹配任意一个数字或字母或下划线
6)\W:匹配除数字、字母、下划线以外的任意一个字符
7). 匹配除换行符以外的任意一个字符
如果真的只是匹配一个. 则在前面加\转义下
8)* 放在*前面的那个字符可以出现0次、1次也可以出现多次(就是*前面的字符不重要)
$pattern='/te*st/';
$str="abcteeests";
var_dump(preg_match_all($pattern,$str,$arr));
var_dump($arr);
//int 1
//array (size=1)
// 0 =>
// array (size=1)
// 0 => string 'teeest' (length=6)
9)+ 放在+前的字符可以出现1次也可以出现多次,但不能不出现
$pattern='/te+st/';
$str="abctst";
var_dump(preg_match_all($pattern,$str,$arr));
var_dump($arr);
//int 0
//array (size=1)
// 0 =>
// array (size=0)
// empty
10)? 放在?前的字符可以出现0次或1次
11){n}:表示其前面字符恰好出现n次
$pattern='/te{3}st/';
$str="abcteeest";
var_dump(preg_match_all($pattern,$str,$arr));
var_dump($arr);
//int 1
//array (size=1)
// 0 =>
// array (size=1)
// 0 => string 'teeest' (length=6)
12){n,}:表示其前面字符出现不少于n次
13){n,m}:表示其前面的字符至少出现n次,最多出现m次
14)^或\A:匹配字符串开始位置
15)$或\Z:匹配字符串的结束位置
16)| 匹配两个或多个模式
17)[] 匹配方括号内的任意一个字符
18)[^] 匹配除方括号内字符以外的任意字符
19)() 将括号中作为一个整体以便将其中的内容获取到