PHP—正则表达式

一、正则表达式语法规则
描述了一类字符串的特征,然后通过这个特征可以配合一些特定的函数,来完成对字符串更加复杂的一系列操作!
普通字符和特殊字符组成的一个字符串
二、定界符
我们一般习惯使用正斜线"/"作为定界的字符,前后一致
三、普通字符
四、元字符

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

五、模式修正符
在正则表达式的定界符之后使用的,可以调整正则表达式的解释,扩展正则表达式在匹配、替换等操作时的某些功能,增强正则表达式的处理能力。
常见模式修正符

	i	在和模式进行匹配时不区分大小写
	m	多行匹配,如果目标字符串 中没有"\n"字符, 或者模式中没有出现^或$, 设置这个修饰符不产生任何影响
	s	如果设定了此修正符,那么.将匹配所有的字符包括换行符
	U	禁止贪婪匹配
	```

六、与正则表达式配合的函数
preg_match()返回pattern的匹配次数,值为1或0,即只执行一次匹配。

preg_match()
执行一个正则表达式匹配
参数说明:
	第一个参数:正则表达式
	第二个参数:目标字符串
	第三个参数(可选):放一个变量,执行完成之后,里面会有匹配到的部分以及等等一些数据!
	第四个参数(可选):可以传PREG_OFFSET_CAPTURE进入(那么第三个参数那个变量里面的数据就会有匹配到的部分的偏移值),默认传的是0
	第五个参数(可选):可以传一个值,来表示从目标字符串的哪个位置开始搜索(单位是字节)。
*/
$pattern='/t(.*?)st/';
$str='adwdwqdqwdqwtest      tdqwst     test  tvrgrgrst';
var_dump(preg_match($pattern, $str,$arr));
var_dump($arr);
if(preg_match($pattern, $str,$arr,PREG_OFFSET_CAPTURE)){
	echo '找到啦!<br />';
	var_dump($arr);
}else{
	echo '没找到!';
}

preg_match_all()执行一个全局正则表达式匹配。

preg_match_all()
第四个参数(可选):
	PREG_PATTERN_ORDER
	PREG_SET_ORDER
	PREG_OFFSET_CAPTURE
第五个参数(可选):可以传一个值,来表示从目标字符串的哪个位置开始搜索(单位是字节)。
$pattern='/t(.*?)(s)t/';
$str='adwdwqdqwdqwtest      tdqwst     test  tvrgrgrst';
var_dump(preg_match_all($pattern, $str,$arr,PREG_OFFSET_CAPTURE));
var_dump($arr);

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


   preg_replace第一个参数与第二个参数传数组,一一对应的去替换!
   第一个参数:正则表达式
   第二个参数:要替换的字符串
   第三个参数:目标表达式
*/
$pattern=array(
		'/<div(.*?)>(.*?)<\/div>/',
		'/<p(.*?)>(.*?)<\/p>/'
);
$str1=array(
		'<a$1 href="http://sifangku.com">$2</a>',
		'<span$1>我是span标签啦!$2</span>'
);
$str='dwqdwq<div style="color:red;font-size:25px;">测试成为绯闻绯闻绯闻绯dwqdwqdwq闻cqdwqdqw</div>dqwwdqdwq<p>我是后面那个div</p>';

echo '替换后的:'.preg_replace($pattern, $str1, $str,-1,$count);
var_dump($count);
echo '<br /><br /><br /><br />';
echo '原来的字符串:'.$str;

猜你喜欢

转载自blog.csdn.net/qq_43531669/article/details/89645265
今日推荐