PHP正则表达式基础必须掌握

正则表达式
作用:
1,分割
2,匹配
3,查找
4,替换
一个正则表达式至少包含一个原子
正则表达式就是一个字符串
什么时候使用正则?
1,表单匹配
2,URl的重写,路由重写
3,小偷采集
如何使用正则表达PHP
PCRE库正则表达式库,大多数语言都在使用,通用
POSIX库
正则表达式的语法规则和组成部分
1,定界符
两个正斜线//,用户把需要匹配的模式放在定界符之间即可
除了字母,数字,斜线\之外的任何字符都可以作为定界符
# | !也是可以当做定界符的
2,原子
原子是正则表达式最基本的组成单元
1,普通字符作为原子    如a-z,A-Z 0-9等
2,一些特殊字符和转义后的元字符作为原子
如,索引的标点符号,但语句特殊意义的符号需要转义后才能作为原子,
如:\*  \+  \.  等
3,一些非打印字符作为原子  如\f \n \r \t  \v  \cx
4,使用通用字符类型作为原子,如 \d \D \w \W \s  \S

5, 自定义原子表([])作为原子  如'/[apj]sp/'  '/[^apj]sp/'

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>正则是匹配</title>
</head>
<body>
	<form action="">
	<input type="text" name="zz">
	<input type="submit" value="正则表达式匹配">

	</form>
	
</body>
</html>

<?php 
header("Content-type: text/html; charset=utf-8"); 

// $pattern="/abc/";
// //如果匹配的到返回1,匹配不到返回0
// //=======================原子===================//

// $pattern="/abc/";			//普通的原子
// $patten="/\./"; 				//特殊的原子需要反斜线的转义
// $pattern="/\n/"; 			//匹配非打印字符

// /*=============6种通用原子开始===============*/

// $pattern="/\d/";				//匹配任意一个数字
// $pattern="/\D/";				//陪陪除了数字之外的任意字符
// $pattern="/\w/";				//匹配数字,大小写字母,下划线
// $pattern="/\W/";				//匹配除了数字,字母下划线的任意字符
// $pattern="/\s/";				//匹配空白字符
// $pattern="/\S/";				//匹配除了空白符以外的任意字符
// /*=============6种通用原子结束===============*/

// /*=============15种元字符开始===============*/

//$pattern="/go*gle/"; 			//*代表匹配前面的原子0次,1次或者多次
//$pattern="/go+gle/";			//+代表匹配前面的原则至少一次或者多次
//$pattern="/go?gle/";			//?智能匹配前面的原子0次或1次
//$pattern="/./";				//.匹配除了换行符以外的任意一个字符

//$pattern="/a|b/";				//或者匹配,匹配a或者b
//$pattern="/go{3}gle/"; 		//{n}匹配n次,可以匹配前面的n次原子,例如gooole可以匹配,如果goooogle是不能匹配的
//$pattern="/go{3,}gle/"; 		//{n,}可以匹配上面的原子大于n的
//$pattern="/go{1,3}gle/"; 		//{n,}可以匹配上面的原子大于n的

//$pattern="/^我们是好人/";  	//^符号必须是从头开始,否则全文有也是输出错误,不加^的话默认是全文匹配,
//$pattern="/我们是好人$/";     //$ 必须以我们是好人结尾
//$pattern="/^我们是好人$/";	//开头^和$结尾,必须是全部匹配,原子相等
//$pattern="/^我们是.*好人$/";	//开头^和$结尾,中间可以是任意的字符
//$pattern="/\bis/";  			// \b是必须以每个单词是is开头
//$pattern="/is\b/";			//必须是以is结尾
//$pattern="/\bis\b/";			//必须是以is开头和结尾
//$pattern="/\Bis/"; 			//is必须不能开头
//$pattern="/is\B/"; 			//不能以is结尾

//$pattern="/[abc]/";			//相当于a或b或c,用户输入a或b或c都可以匹配
//$pattern="/[^abc]/";			//除了a,b,c都可以匹配

//$pattern="/ab|cd/";			//可以匹配ab或者cd,相当于|
//$pattern="/ab|cd:/";			//可以匹配到ab或者cd:
//$pattern="/(ab|cd):/";		//可以匹配到ab:或者是cd: ,后向引用或者反向引用

//$pattern="/<b>.*</b>/";		//匹配所有的<b>所有的内容</b>,这是贪婪模式
//		贪婪模式,第一个<b>到最后一个</b>的所有内容,包含<b>之间的所有的<b></b></b>
//$pattern="/<b>.*?<\/b>/";			//.*?取消贪婪模式,输出第一个<b></b>标签之间的内容
// $str="<b>hao</b>are you<b></b>";

//$pattern="/[.]/";	//单纯的.没有其他含义
//$pattern="/[.*]/"; //里面的.*等特殊字符会失去原有的意义,只要是带有.或*的字符串都可以匹配成功

//匹配中文 $pattern="/[^x00-xff]/";
// /*=============15种元字符结束===============*/

// /*=============模式修正符===============*/
// $pattern="/[a-z]/i";//可以匹配a-z的大小写都可以
//$pattern="/ab/i";//可以匹配ab的大小写都可以
//$pattern="/^ab/m";	//可以在每一行开始匹配,是否ab开头,^是以什么开头,多行匹配
//类似$str="a\nb";
 
//$pattern="/./s";//.匹配除了换行符以外的任意一个字符,s是修正了.的换行符

//$pattern="/a b c/x";// 模式中的空白忽略不计,除非他已经转义,输入abc是可以匹配成功的,但是a b c匹配不成功
//在正则表达式中最后添加e,e是eval()的缩写
//$pattern="/<b>.*?<\/b>/u"  //U是贪婪模式,备注:.*?+U是取消取消贪婪模式=贪婪模式

//$pattern="/abc$/";//默认情况下,是匹配以abc结尾的字符串,但是如果
//$str="dwedwedewabc\n";这样也是会匹配成功的,因为\n是换行符
//$pattern="/abc$/D"; 加D是更加严谨,换行的话直接报错的
// /*=============模式修正符结束===============*/


//  /*=============正则式优化方面===============*/
//例如: ?:http|https|ftp 这样的话在生成的数组会没有这一项
//		减少内存占用
//		
//在字符串中运行php代码:
//在正则表达式中最后添加e,e是eval()的缩写
//例如$pattern="/http:\/\/\w+\.\w+\.(com|cn)/e";
//然后在preg_replace()中更改
//$str=preg_replace($pattern,'\'<a href="$0">\'.strtoupper("$0").\'</a>\'', $str);
//上面的示例是将需要替换的值自动变成大写
//  /*=============正则式优化方面结束============*/



/**************preg_match函数开始*******/
	//preg_match($pattern,$str,$arr);//执行一次返回一次匹配结果
	//需要遍历出结果
/**************preg_match函数结束*******/

/**************preg_match_all函数开始*******/
	//preg_match_all($pattern,$str,$arr);//返回一个数组
	//可以将全部的匹配结果匹配出来
	//如果这是打印var_dump($arr)会输出匹配后的数组
	//如果这是打印var_dump($arr[0])会输出匹配后的内容
/**************preg_match_all函数结束*******/


/**************preg_replace函数开始,推荐使用,重要!!*******/
//preg_replace($pattern,'替换内容',$arr); //返回直接替换后字符串
//(反向)后向引用就是将之前查询出的内容在preg_replace()的第二个函数直接引用
//因为第二个函数加载替换内容,可以直接放入$0或者\\0
//$0和\\0是根据正则式匹配前置出来的内容
//$0和\\0其实是数组,可以自己打印一下
/**************preg_replace结束******************************/

//另外的正则函数
//preg_grep
//preg_split

$str=$_GET['zz']; //测试接收

if(preg_match($pattern,$str,$arr)){
	echo "<font color='green'>恭喜你,匹配成功</font><br/>";
	echo "<pre>";
	var_dump($arr);
	echo "</pre>";
}else{

	echo "<font color='red'>没有匹配到</font>";

}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值