PHP学习笔记 正则表达式 9.23

正则表达式
一、正则表达式语法规则
描述一类字符串的特征,然后通过这类特征可以配合一些特定的函数,来完成对字符串更加复杂的一系列操作。
普通字符和特殊字符组成的字符串

比如,preg_match_all:按指定的正则表达式,在给定的字符串中进行搜索,匹配到符合特征的部分取出来

<?php
$pattern='/test/';
$str='abctestgtest kjdlrk';
var_dump(preg_match_all($pattern,$str,$arr)); 
?> 

二、定界符
一般习惯使用正斜线 “/” 来作为定界的字符,前后一致

三、普通字符

四、元字符
比如,/d:代表十进制数字0-9,中的任意一个数字

<?php
$pattern='/t\dst/';
$str='abct1stgkjdlrk';
var_dump(preg_match_all($pattern,$str,$arr)); 
?> 

\D 匹配除十进制数字以外的任何一个字符
\s 匹配任意一个空白字符,如换行符,换页符,空格,制表符等
\S 匹配除空白字符以外的任何一个字符
\w 匹配任意一个数字,字母或下划线

\W 匹配除数字,字母或下划线以外的任何一个字符
. 匹配除换行符以外的任意一个字符,如果真的只是想匹配一个 . 那么在正则表达式的时候,把 . 使用 / 来转义。

“*” 匹配0次,或1次,或多次其前面的字符
放在 * 前面的字符可以出现0次,1次或多次:

<?php
$pattern='/te*st/';
$str='abcteeeeeeeest';
var_dump(preg_match_all($pattern,$str,$arr)); 
var_dump($arr);
?>  

“+” 匹配1次或多次其前面的字符
“?” 匹配0次或1次其前面的字符

{n} 表示前面的字符恰好出现n次:

<?php
/*
元字符:{n} n代表自己写的一个数字,表示其千米那字符恰好出现n次
         放在{n}前面的那个字符正好出现n次
*/
$pattern='/te{1}st/';
$str='abctest';
var_dump(preg_match_all($pattern,$str,$arr)); 
var_dump($arr);
?>  

{n,} 表示前面的字符不少于n次
{n,m} 表示前面的字符至少出现n次,至多出现m次
…………

. 与 * 配合使用 贪婪匹配

<?php
/*
.与*配合使用默认情况下是 贪婪匹配
.*后面加上?可以解决贪婪匹配的问题,变成懒惰匹配
*/
$pattern='/t.*t/';
$str='abctjdtkafhkahkwt';
var_dump(preg_match_all($pattern,$str,$arr)); 
var_dump($arr);
?>  

^或\A 匹配字符串开始位置

$pattern='/^test/';
$str='testabc';       //必须以t开头
var_dump(preg_match_all($pattern,$str,$arr)); 
var_dump($arr);

$或\Z 匹配字符串结束位置

| 匹配两个或多个模式、

$pattern='/test|abc|aaa/';
$str='testkjafkwdabcjjkafkdaaa';      
var_dump(preg_match_all($pattern,$str,$arr)); 
var_dump($arr);

[] 匹配方括号中的任意一个字符

$pattern='/t[abce]st/';
$str='testkjtastafkwtcstdabc';      
var_dump(preg_match_all($pattern,$str,$arr)); 
var_dump($arr);

[^] 匹配方括号中字符以外的任意一个字符

() 将括号中的内容作为一个整体以便将其中的内容获取到,在正则表达式中,可以使用圆括号将某一段括起来,在圆括号的后面部分,我们可以使用 \ 数字来代表圆括号部分所匹配到的内容

$pattern='/t(e)st\\1/';   //  \\1就代表第一个圆括号部分所匹配到的内容'/teste/'
$str='         teste       ';      
var_dump(preg_match_all($pattern,$str,$arr)); 
var_dump($arr);

当()里面是 . 时:

$pattern='/t(.)(.)t\\1\\2/';   //  \\1就代表第一个圆括号部分所匹配到的内容
$str='         t1ct1c       ';      
var_dump(preg_match_all($pattern,$str,$arr)); 
var_dump($arr);

五、模式修正符
i 在和模式进行匹配时不区分大小写;

m 多行匹配, 使用条件:
1)目标字符串中必须包含“\n”,在字符串中出现“\n”就表示新的一行开始
2) 正则表达式中必须出现^或$

s 若设定了此修正符,那么 . 将匹配所有的字符包括换行符

u 禁止贪婪匹配

六、与正则表达式配合的函数
1.preg_match 执行一个正则表达式匹配
参数说明:
1)正则表达式
2)目标字符串
3)放一个变量,执行完之后,里面会有匹配到的部分以及等等一些数据
4)可以传PREG_OFFSET_CAPTURE进入,默认传的是0
5)可以传一个值,来表示从目标字符串的哪个位置开始搜索(单位是字节)。

$pattern='/t(.*?)st/';   //  
$str='         test       tfjhkst     test     tkfsjksdhst ';      
var_dump(preg_match($pattern,$str,$arr,PREG_OFFSET_CAPTURE)); 
var_dump($arr);

2.preg_match_all
参数说明:
前三个同上
4)可选
PREG_PATTERN_ORDER
PREG_SET_ORDER
PREG_OFFSET_CAPTURE
5)可以传一个值,来表示从目标字符串的哪个位置开始搜索(单位是字节)

$pattern='/t(.*?)st/';  
$str='         test       tfjhkst     test     tkfsjksdhst ';      
var_dump(preg_match_all($pattern,$str,$arr,PREG_OFFSET_CAPTURE)); 
var_dump($arr);

3.preg_replace 执行一个正则表达式的搜索和替换

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值