编程语言
首页 > 编程语言> > php之路2

php之路2

作者:互联网

正则表达式

?

匹配0次或1次其前面的字符
放在?前面的那个字符可以出现0次,或者1次

<?php
/*
元字符:?
	匹配0次或1次其前面的字符
	放在?前面的那个字符可以出现0次,或者1次
*/
$pattern='/te?st/';
$str='abcteest';
var_dump(preg_match_all($pattern,$str,$arr));
var_dump($arr);
?>
+

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

<?php
/*
元字符:+
	匹配1次或多次其前面的字符
	放在+前面的那个字符可以出现1次,也可以出现多次
*/
$pattern='/te+st/';
$str='abctst';//+代表前面的字符出现1次或者多次,但是不能不出去,很显然我们这边一次都没有出现,我们没有匹配到符合特征的!
var_dump(preg_match_all($pattern,$str,$arr));
var_dump($arr);
?>
{n}

表示其前面字符恰好出现n次
放在{n}前面的那个字符正好出现n

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

表示其前面字符出现不少于n次
放在{n,}前面的那个字符出现的次数应该大于等于n次

<?php
/*
元字符:{n,}  n代表自己写的一个数字
	表示其前面字符出现不少于n次
	放在{n,}前面的那个字符出现的次数应该大于等于n次
*/
$pattern='/te{3,}st/';
$str='abcteeest';
var_dump(preg_match_all($pattern,$str,$arr));
var_dump($arr);
?>
{n,m}

{n,m} 表示其前面的字符至少出现n次,最多出现m次

<?php
/*
元字符:{n,m}  表示其前面的字符至少出现n次,最多出现m次
*/
$pattern='/te{3,5}st/';
$str='abcteeeeeest';
var_dump(preg_match_all($pattern,$str,$arr));
var_dump($arr);
?>
.与{n}配合

表示前面出现任意字符出现n次

<?php
/*
.与{n}配合
*/

$pattern='/t.{3}st/';//  t...st
$str='abctabcst';
var_dump(preg_match_all($pattern,$str,$arr));
var_dump($arr);
?>
.与*配合

表示出现任意次随意字符


$pattern='/t.*st/';//tst
$str='abctst';
var_dump(preg_match_all($pattern,$str,$arr));
var_dump($arr);
?>
贪婪匹配与懒惰匹配
<?php 
/*
 .与*配合
 
 .*配合使用默认情况下是 贪婪匹配(尽可能多的去匹配字符)
*/

$pattern='/t.*t/';
$str='abctstdwqdwqdqwdqwdwqtdwqdwqdqwdwqt';
var_dump(preg_match_all($pattern,$str,$arr));
var_dump($arr);



//.*后面加上一个?可以解决贪婪匹配的问题, 懒惰匹配
$pattern='/t.*?t/';
$str='abctstdwqdwqdqwdqwdwqtdwqdwqdqwdwqt';
var_dump(preg_match_all($pattern,$str,$arr));
var_dump($arr);


//.*后面加上一个?可以解决贪婪匹配的问题, 懒惰匹配
$pattern='/1.*?t/';
$str='ab1ctstdwqdwqdq1wdqwdwqtdwqdwqdqwdwqt';
var_dump(preg_match_all($pattern,$str,$arr));
var_dump($arr);

?>
^或\A

匹配字符串开始位置

<?php 
/*
^或\A	匹配字符串开始位置
*/
$pattern='/^test/';
$str='testabc';
var_dump(preg_match_all($pattern,$str,$arr));
var_dump($arr);
?>
$或\A

匹配字符串的结束位置

<?php 
/*
$或\A	匹配字符串的结束位置
*/
$pattern='/test$/';
$str='dwqdtestwqdwqdwqtest';
var_dump(preg_match_all($pattern,$str,$arr));
var_dump($arr);
?>
^与$配合使用
<?php 
/*
^与$配合使用
*/
$pattern='/^te.*st$/';
$str='tedwqdwqdwqdwqdwqdqdwqdqst';
var_dump(preg_match_all($pattern,$str,$arr));
var_dump($arr);
?>
|

<?php 
/*
|
*/
$pattern='/test|abc|AAA/';
$str='efAAAewtestfweabcfwefAAAwe';
var_dump(preg_match_all($pattern,$str,$arr));
var_dump($arr);
?>
[]

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

<?php 
/*
[]匹配方括号中的任意一个字符
*/
$pattern='/t[abcde]st/';
$str='dwqdwtestqdqwtastdwqdwqdwqdwqtbst';
var_dump(preg_match_all($pattern,$str,$arr));
var_dump($arr);
?>
[^]

匹配除方括号中的元素外的任意一个字符

<?php 
/*
[^]匹配方括号中的任意一个字符
*/
$pattern='/t[^e]st/';
$str='abct@st';
var_dump(preg_match_all($pattern,$str,$arr));
var_dump($arr);
?>
*

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

<?php
/*
元字符:*
	匹配0次、或1次、或多次其前面的字符
	放在*前面的那个字符可以出现0次,也可以出现1次,也可以出现多次
*/
$pattern='/te*s*t/';
$str='abcteeeeeeeeeeeeeesssssssssssssssst';
var_dump(preg_match_all($pattern,$str,$arr));
var_dump($arr);
?>

标签:字符,匹配,前面,任意,之路,配合,php,出现
来源: https://blog.csdn.net/weixin_54252904/article/details/116266401