7-1. PHP正则表达式、元字符

正则表达式:

描述了一类字符串的特征,通过这个特征与特定的函数配合,对其他的字符串进行匹配、查找、替换及分割操作

 

这类字符串的特征是由一个或多个以下两种组成的一个字符串

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)()   将括号中作为一个整体以便将其中的内容获取到

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值