php使用正则表达式提取字符串中尖括号、小括号、中括号、大括号中的字符串


Posted in PHP onApril 05, 2020

一、小括号()、中括号[]、大括号的区别

 1>. 小括号():匹配小括号内的字符串,可以是一个,也可以是多个,常跟“|”(或)符号搭配使用,是多选结构的

示例1:string name = "way2014"; regex:(way|zgw) result:结果是可以匹配出way的,因为是多选结构,小括号是匹配字符串的

示例2:string text = "123456789"; regex:(0-9) result:结果是什么都匹配不到的,它只匹配字符串"0-9"而不是匹配数字, [0-9]这个字符组才是匹配0-9的数字

 2>.中括号[]:匹配字符组内的字符,比如咱们常用的[0-9a-zA-Z.*?!]等,在[]内的字符都是字符,不是元字符,比如“0-9”、“a-z”这中间的“-”就是连接符号,表示范围的元字符,如果写成[-!?*(]这样的话,就是普通字符

示例1: string text = "1234567890"; regex:[0-9] result:结果是可以匹配出字符串text内的任意数字了,像上边的【或符号“|”在字符组内就是一个普通字符】

示例2:string text = "a|e|s|v"; regex:[a|e|s] result:结果就是匹配字符a、e、|三个字符,这个跟(a|e|s)有区别的,区别就是(a|e|s)匹配的是a、e、s三个字符的随意一个,三个中的任意一个,这是的|是元字符

 3>.大括号{}:匹配次数,匹配在它之前表达式匹配出来的元素出现的次数,{n}出现n次、{n,}匹配最少出现n次、{n,m}匹配最少出现n次,最多出现m次

更多的可以参考这篇文章:https://3water.com/article/141294.htm

测试代码

$str="你好<我>(爱)[北京]{天安门}";

echo f1($str); //返回你好 
echo f2($str); //返回我 
echo f3($str); //返回爱 
echo f4($str); //返回北京 
echo f5($str); //返回天安门

function f1($str) 
{ 
$result = array(); 
preg_match_all("/^(.*)(?:<)/i",$str, $result); 
return $result[1][0]; 
} 
 
function f2($str) 
{ 
$result = array(); 
preg_match_all("/(?:<)(.*)(?:>)/i",$str, $result); 
return $result[1][0]; 
}

function f3($str) 
{ 
$result = array(); 
preg_match_all("/(?:\()(.*)(?:\))/i",$str, $result); 
return $result[1][0]; 
}

function f4($str) 
{ 
$result = array(); 
preg_match_all("/(?:\[)(.*)(?:\])/i",$str, $result); 
return $result[1][0]; 
}

function f5($str) 
{ 
$result = array(); 
preg_match_all("/(?:\{)(.*)(?:\})/i",$str, $result); 
return $result[1][0]; 
}

PS: (?:字符) 表示不捕获这个字符。貌似PHP不支持将字符换成括号。
否则的话可以将环视给嵌套进去,就可以循环匹配了。
PS2:环视:(?!) (?=) (?<!) (?<=)
有小于号的在右侧匹配,没有的在左侧匹配。感叹号表示不等,等于号表示相等。
PS3:都过了验证器的验证,验证器见参考资料。

PHP 相关文章推荐
PHP安全编程之加密功能
Oct 09 PHP
php面向对象全攻略 (七) 继承性
Sep 30 PHP
php的一些小问题
Jul 03 PHP
ThinkPHP与PHPExcel冲突解决方法
Aug 08 PHP
php异常处理使用示例
Feb 25 PHP
php快速排序原理与实现方法分析
May 26 PHP
php使用ftp远程上传文件类(完美解决主从文件同步问题的方法)
Sep 23 PHP
PHP实现验证码校验功能
Nov 16 PHP
windows环境下使用Composer安装ThinkPHP5
May 18 PHP
PHP自定义函数实现assign()数组分配到模板及extract()变量分配到模板功能示例
May 23 PHP
PHP面向对象程序设计模拟一般面向对象语言中的方法重载(overload)示例
Jun 13 PHP
php数组指针函数功能及用法示例
Feb 11 PHP
PHP中的Memcache详解
Apr 05 #PHP
PHP中使用memcache存储session的三种配置方法
Apr 05 #PHP
PHP包含文件函数include、include_once、require、require_once区别总结
Apr 05 #PHP
PHP6 中可能会出现的新特性预览
Apr 04 #PHP
php实现水仙花数示例分享
Apr 03 #PHP
PHP抓取、分析国内视频网站的视频信息工具类
Apr 02 #PHP
php 字符串中的\n换行符无效、不能换行的解决方法
Apr 02 #PHP
You might like
CodeIgniter中使用Smarty3基本配置
2015/06/29 PHP
PHP的mysqli_stat()函数讲解
2019/01/23 PHP
jquery 实现的全选和反选
2009/04/15 Javascript
js图片向右一张张滚动效果实例代码
2013/11/23 Javascript
js操作iframe父子窗体示例
2014/05/22 Javascript
理解javascript中的回调函数(callback)
2014/09/02 Javascript
js实现类似jquery里animate动画效果的方法
2015/04/10 Javascript
在Node.js应用中读写Redis数据库的简单方法
2015/06/30 Javascript
分享Javascript实用方法二
2015/12/13 Javascript
jquery获取复选框checkbox的值实现方法
2016/05/30 Javascript
在vue项目中使用Jquery-contextmenu插件的步骤讲解
2019/01/27 jQuery
微信小程序云函数使用mysql数据库过程详解
2019/08/07 Javascript
微信小程序用canvas画图并分享
2020/03/09 Javascript
[00:32]2016完美“圣”典风云人物:Maybe宣传片
2016/12/05 DOTA
[54:18]DOTA2-DPC中国联赛 正赛 PSG.LGD vs LBZS BO3 第一场 1月22日
2021/03/11 DOTA
python快速排序代码实例
2013/11/21 Python
Python实现将数据框数据写入mongodb及mysql数据库的方法
2018/04/02 Python
代码实例讲解python3的编码问题
2019/07/08 Python
Python实现的企业粉丝抽奖功能示例
2019/07/26 Python
PyQt5实现暗黑风格的计时器
2019/07/29 Python
Django缓存系统实现过程解析
2019/08/02 Python
python opencv图片编码为h264文件的实例
2019/12/12 Python
pyecharts绘制中国2020肺炎疫情地图的实例代码
2020/02/12 Python
HTML5 form标签之解放表单验证、增加文件上传、集成拖放的使用方法
2013/04/24 HTML / CSS
孤独星球出版物:Lonely Planet Publications
2018/03/17 全球购物
小学运动会表扬稿
2014/01/19 职场文书
致长跑运动员加油稿
2014/02/20 职场文书
喷漆工的岗位职责
2014/03/17 职场文书
社会实践评语
2014/04/28 职场文书
校园文明倡议书
2014/05/16 职场文书
安全目标责任书
2014/07/22 职场文书
2015年生活老师工作总结
2015/05/27 职场文书
八年级作文之感悟亲情
2019/11/20 职场文书
php去除deprecated的实例方法
2021/11/17 PHP
MySql数据库触发器使用教程
2022/06/01 MySQL
java.util.NoSuchElementException原因及两种解决方法
2022/06/28 Java/Android