正则表达式

元字符

\d 匹配任意一个十进制数字,等价于[0~9]
\D 匹配任意一个除十进制数字以外字符[除了0~9以外的字符]
\s 匹配任意一个空白字符,比如换页符、换行符、回车符、制表符等
\S 匹配除空白字符以外的任何一个字符
\w 匹配任意一个数字或字母或下划线
\W 匹配除数字、字母、下划线以外的任意一个字符
. 匹配除换行符以外的任意一个字符
* 匹配0次、或1次、或多次其前面的字符
+ 匹配1次或多次其前面的字符
? 匹配0次或者1次前面的字符
{n} n代表自己写的一个数字,表示其前面字符恰好出现了n次,放在{n}前面的那个字符正好出现n次
{n,} 表示前面的字符出现不少于n次,放在{n,}前面的那个字符出现的次数应该大于等于n次
{n,m} 表示其前面的字符至少出现n次,最多出现m次
^或\A 匹配字符串开始位置(匹配的字符串必须已\A后面的字母开头)
$或\Z 匹配字符串结束
[ ] 匹配方括号中的任意一个字符
[^] 匹配除了方括号中字符以外的任意一个字符
() 将括号中作为一个整体以便将其中的内容获取到
在正则表达式中,可以使用圆括号来将某一段括起来,在圆括号的后面部分,我们可以使用\数字,来代表圆括号部分所匹配到的内容
举例

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

元字符*
匹配0次、或1次、或多次其前面的字符
放在*前面的那个字符可以出现0次,也可以出现1次,也可以出现多次

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

.与{n}配合

<?php
$pattern='/t.{3}st/';
$str='abctaaast';
var_dump(preg_match_all($pattern,$str,$arr));
var_dump($arr);
?>

.与*配合
配合使用默认情况下是 贪婪匹配(尽可能多的去匹配字符)
后面加上一个?可以解决贪婪匹配,懒惰匹配

<?php
$pattern='/t.*st/';
$str='abctaaaaaaaaast';
var_dump(preg_match_all($pattern,$str,$arr));
var_dump($arr);
?>

[ ]使用

<?php
$pattern='/t[abcde]st/';
$str='abctast';
var_dump(preg_match_all($pattern,$str,$arr));
var_dump($arr);
?>

()\ \使用

<?php
$pattern='/t(.)(.)t\\1\\2/';
$str='			tastas		';
var_dump(preg_match_all($pattern,$str,$arr));
var_dump($arr);
?>

模式修正符

i 在和模式进行匹配时不区分大小写
s 如果设定了此修正符,那么.将匹配所有的字符包括换行符(\n)
U 禁止贪婪匹配

正则表达式函数

preg_match()
执行一个正则表达式匹配
返回pattern的匹配次数,它的值将是0次(不匹配)或1次,匹配到 一次后将会停止搜索,与preg_match_all不同,preg_match_all会一直搜索直到到达结尾。

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

preg_replace()
执行一个正则表达式的搜索和替换
参数说明:
第一个参数:正则表达式
第二个参数:要替换成的字符串
第三个参数:目标字符串

举例:

<?php
$pattern='/<div(.*?)>(.*?)<\/div>/';
$str1='<a\\1 href="http://www.baidu.com">\\2<a>';
$str='aaaa<div style="color:red;font-size:25px;">测试啊啊啊啊水水水水水水水aaa</div>';
if(preg_match($pattern,$str,$arr)){
		echo'替换后的:'.preg_replace($pattern,$str1,$str);
}else{
		echo'对不起,没有找到!';
}
echo'<br><br><br>';
echo'原来的字符串:'.$str;
?>

preg_replace()第一个参数与第二个参数传数组,会一一对应的去替换

<?php
header("content-type:text/html;charset=utf8");
$pattern=array('/<div(.*?)>(.*?)<\/div>/',
					'/<p(.*?)>(.*?)<\/p>/'
);
$str1=array('<a\\1 href="http://www.baidu.com">\\2</a>',
					'<span\\1>我是span标签了!\\2</span>'
);
$str='aaaa<div style="color:red;font-size:25px;">测试啊啊啊啊水水水水水水水aaa</div><p>我是后面的p标签</p>';
echo'替换后的:'.preg_replace($pattern,$str1,$str);
echo'<br><br><br>';
echo'原来的字符串:'.$str;
?>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值