欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

PHP正则表达式之量词、元字符、修饰符

程序员文章站 2022-03-30 09:45:17
介绍1、正则表达式中包含三种元素分别为:量词、元字符、修饰符2、前导字符串:就是符号前面的一个字符或字符串量词+匹配任何至少包含一个前导字符串*匹配任何包含零个或多个前导字符串?匹配任何包含零个或1个前导字符串.匹配任意一个字符串{x}匹配任何包含x个前导字符串{x,y}匹配任何包含 x 到 y 个前导字符串{x,}匹配任何包含至少x个前导字符串^匹配字符串的行首$匹配字符串的行尾|选择符 匹配字符串的左边或者右边()分组,提取preg...

介绍

1、正则表达式中包含三种元素分别为:量词、元字符、修饰符
2、前导字符串:就是符号前面的一个字符或字符串

量词

+		匹配任何至少包含一个前导字符串
*		匹配任何包含零个或多个前导字符串
?		匹配任何包含零个或1个前导字符串
.		匹配任意一个字符串
{x}		匹配任何包含x个前导字符串
{x,y}	匹配任何包含 x 到 y 个前导字符串
{x,}	匹配任何包含至少x个前导字符串
^		匹配字符串的行首
$		匹配字符串的行尾
|		选择符 匹配字符串的左边或者右边
()		分组,提取

preg_match()函数 匹配成功返回1,失败返回0

	echo preg_match('/a+/','abc');             //返回1
	echo preg_match('/a*/','abc');             //返回1
	echo preg_match('/a?/','abc');             //返回1
	echo preg_match('/./','abc');              //返回1
	echo preg_match('/a{2}/','aabc');          //返回1
	echo preg_match('/a{2,5}/','aaabc');       //返回1
	echo preg_match('/a{2,}/','aaaaabc');      //返回1
	echo preg_match('/^a/','bac');             //返回0
	echo preg_match('/^a/','abc');             //返回1
	echo preg_match('/a$/','abc');             //返回0
	echo preg_match('/a$/','cba');             //返回1
	echo preg_match('/a|b/','a');              //返回1
	echo preg_match('/a|b/','b');              //返回1
	echo preg_match('/(abc)+/','abcd');        //返回1
	

元字符

元字符			说明
[a-z]			匹配任何包含小写字母a-z的字符串
[A-Z]			匹配任何包含大写字母A-Z的字符串
[0-9]			匹配任何包含0-9的字符串
[abc]			匹配任何包含小写字母a,b,c的字符串
[^abc]			匹配任何不包含小写字母a,b,c的字符串
[a-zA-Z0-9_]	匹配任何包含a-zA-Z0-9和下划线的字符串
\w				匹配任何包含a-zA-Z0-9和下划线的字符串
\W				匹配任何不包含a-zA-Z0-9和下划线的字符串
\d				匹配任何包含数字字符
\D				匹配任何非数字字符
\s				匹配任何空白字符
\S				匹配任何非空白字符
\b				匹配是否到达了单词边界
\B				匹配没有到达了单词边界
\				匹配正则中的特殊字符
/[`~!@#$%^&*()_\-+=<>?:"{}|,.\/;'\\[\]·~!@#¥%……&*()——\-+={}|《》?:“”【】、;‘',。、]/im; 
 
echo preg_match('/[a-z]/','abc');//返回1
echo preg_match('/[A-Z]/','ABC');//返回1
echo preg_match('/[0-9]/','123');//返回1
echo preg_match('/[abc]/', 'a');//返回1
echo preg_match('/[^abc]/', 'd');//返回1
echo preg_match('/[^a-zA-Z0-9_]/', 'aD45_');//返回1
echo preg_match('/\w/', 'aD45_');//返回1
echo preg_match('/\W/', 'aD45_');//返回0
echo preg_match('/\d/', '123456');//返回1
echo preg_match('/\D/', '123456');//返回0
echo preg_match('/\d/', '123456');//返回1
echo preg_match('/\s/', ' ');//返回1
echo preg_match('/\S/', ' ');//返回0
//单词尾部边界
echo preg_match('/at\b/', 'cat');//返回1
//头单词部边界
echo preg_match('/\bat/', 'attribute');//返回1
//没有到达边界
echo preg_match('/\Bat/', 'attribute');//返回0
//特殊字符 $ ^ * () + = {} [] | \\ : <>
echo preg_match('/\$/', '$');//返回1

修饰符

修饰符	说明
i	    完全不区分大小写
m	    可以采用多行识别,遇到换行也承认匹配规则
x	    忽略掉规则模式中的空白字符
A	    强制从头开始匹配
U	    禁止贪婪匹配,只跟踪到最近的一个匹配符并结束
//i 不区分大小写
	echo preg_match('/abcd/','AbcD');//返回0
	echo preg_match('/abcd/i','AbcD');//返回1

 	//m 多行识别
 	$str = '1a
1a';
	preg_match_all('/^1a/',$str,$arr);
	print_r($arr);
	//结果为Array ( [0] => Array ( [0] => 1a ) )
	//默认从头到尾匹配,所以只匹配到一个

	preg_match_all('/^1a/m',$str,$arr);//返回1
	print_r($arr);
	//结果为Array ( [0] => Array ( [0] => 1a [1] => 1a ) )
	//每行都会使用规则,所以匹配的到二个,注意第二行前面不要有空格避免干扰


	//x 忽略模式的空格
	echo preg_match('/a b/','ab');//返回0
	echo preg_match('/a b/x','ab');//返回1

	//A 强制开头匹配
	echo preg_match('/ab/','catabc');//返回1
	echo preg_match('/ab/A','catabc');//返回0
	echo preg_match('/ab/A','abcdef');//返回1

	//U 禁止贪婪匹配
	preg_match_all('/php\w+php/','php123phpphp456php',$arr);
	print_r($arr);
	//结果为Array ( [0] => Array ( [0] => php123phpphp456php ) )

 	preg_match_all('/php\w+php/U','php123phpphp456php',$arr);
	print_r($arr);
	//结果为Array ( [0] => Array ( [0] => php123php [1] => php456php ) )
	//禁止贪婪匹配后,会就近匹配
//风格函数
	//preg_grep()
	$arr = array('php5','php6','php7','css','html');
	$out = preg_grep('/php[0-9]/', $arr);
	print_r($out);
	//结果为Array ( [0] => php5 [1] => php6 [2] => php7 )

	//preg_match()
	echo preg_match('/php[0-9]/','php5');//返回1
	
	//preg_match_all()
	preg_match_all('/php[0-9]/','php5php6php7',$arr);
	print_r($arr);
	//结果为Array ( [0] => Array ( [0] => php5 [1] => php6 [2] => php7 ) )

	//preg_quote()
	echo preg_quote(' $ ^ * () + = {} [] | \\ : <>');
	//结果为 \$ \^ \* \(\) \+ \= \{\} \[\] \| \\ \: \<\>
	
	//preg_replace()
	echo preg_replace('/php/','python', 'php1php2php3');
	//结果为 python1python2python3

	//preg_split()
	$str = preg_split('/a/', 'cbabc');
	print_r($str);

本文地址:https://blog.csdn.net/weixin_45663905/article/details/107243863