PHP正则表达式中的元字符及其例子

8 篇文章 0 订阅

PHP正则表达式中的元字符及其例子

<?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  匹配字符串的结束位置
|   匹配两个或多个模式
[]   匹配方括号中的任意一个字符
[^]  匹配除方括号中字符以外的任意一个字符
()  将括号中作为一个整体以便将其中的内容获取到

*/
$pattern='/test/';      //# ! {} |都可以用于作为定界符
$str='abctestsdafasfsdfasdtest';
var_dump(preg_match_all($pattern,$str,$arr));
var_dump($arr);

echo '<hr>';
//  \d代表匹配任意一个十进制数字等价于0-9
$pattern1='/te\dst/';       //注意写斜杠
$str='te1stdsfsdfsdfdsfds';
var_dump(preg_match_all($pattern1,$str,$arr));
var_dump($arr);

echo '<hr>';
$pattern='/te*st/';     //*   匹配0次,或1次、或多次其前面字符
$str='abcteeest';       //abctst  abctest   abcteeeeeest
var_dump(preg_match_all($pattern,$str,$arr));
var_dump($arr);

echo '<hr>';
$pattern='/te+st/';     //+   匹配1次或多次其前面的字符
$str='abctest';
var_dump(preg_match_all($pattern,$str,$arr));
var_dump($arr);

echo '<hr>';
$pattern='/te{1}st/';     //{n}   表示其前面字符恰好出现n次
$str='abctest';
var_dump(preg_match_all($pattern,$str,$arr));
var_dump($arr);

echo '<hr>';
$pattern='/te{3}st/';     //{n,}  表示其前面字符出现不少于n次
$str='abcteeest';
var_dump(preg_match_all($pattern,$str,$arr));
var_dump($arr);

// 混合用法
//.与{n}混合

echo '<hr>';
$pattern='/t.{3}st/';     //    t...st
$str='abcteeest';
var_dump(preg_match_all($pattern,$str,$arr));
var_dump($arr);

//.与*配合
echo '<hr>';
$pattern='/t.*st/';     //*匹配0次,或1次、或多次其前面字符    .匹配除换行符以外的任意一个字符
$str='abcteeeeest';       //abctst abctest abcteeeeeest
var_dump(preg_match_all($pattern,$str,$arr));
var_dump($arr);

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

//.*后面加上?可以解决贪婪匹配的问题,懒惰匹配
echo '<hr>';
$pattern='/1t.*?st/';
$str='1abcteeeees1ttestsetes1tsetst';
var_dump(preg_match_all($pattern,$str,$arr));
var_dump($arr);

//.*后面加上?可以解决贪婪匹配的问题,懒惰匹配
echo '<hr>';
$pattern='/1t.*?st/';
$str='1abcteeeees1ttestsetes1tsetst';
var_dump(preg_match_all($pattern,$str,$arr));
var_dump($arr);

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

//^或$ 配合使用
echo '<hr>';
$pattern='/^te.*st$/';
$str='test';
var_dump(preg_match_all($pattern,$str,$arr));
var_dump($arr);

//^或$ 配合使用
echo '<hr>';
$pattern='/test|abc|AAA/';      //|   匹配两个或多个模式
$str='testAAAsdfasdfsadfAAAefw';
var_dump(preg_match_all($pattern,$str,$arr));
var_dump($arr);

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

//[^]  匹配除方括号中字符以外的任意一个字符
echo '<hr>';
$pattern='/t[^e]st/';
$str='tast';
var_dump(preg_match_all($pattern,$str,$arr));
var_dump($arr);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值