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
我的论坛源代码(四)
Oct 09 PHP
逐步提升php框架的性能
Jan 10 PHP
PHP中用正则表达式清除字符串的空白
Jan 17 PHP
PHP在字符断点处截断文字的实现代码
Apr 21 PHP
php简单的留言板与回复功能具体实现
Feb 19 PHP
详解PHP数组赋值方法
Nov 07 PHP
php curl模拟post请求和提交多维数组的示例代码
Nov 19 PHP
PHP 类与构造函数解析
Feb 06 PHP
php实现简单的权限管理的示例代码
Aug 25 PHP
PHP实现实时生成并下载超大数据量的EXCEL文件详解
Oct 23 PHP
laravel框架中间件简单使用方法示例
Jan 25 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
基于Windows下Apache PHP5.3.1安装教程
2010/01/08 PHP
编写安全 PHP应用程序的七个习惯深入分析
2013/06/08 PHP
php获取当前时间的毫秒数的方法
2014/01/26 PHP
JavaScript获取指定元素位置的方法
2015/04/08 Javascript
Javascript中的方法和匿名方法实例详解
2015/06/13 Javascript
JavaScript中字面量与函数的基本使用知识
2015/10/20 Javascript
javascript实现PC网页里的拖拽效果
2016/03/14 Javascript
ionic js 模型 $ionicModal 可以遮住用户主界面的内容框
2016/06/06 Javascript
关于vue.js弹窗组件的知识点总结
2016/09/11 Javascript
jQuery EasyUI之验证框validatebox实例详解
2017/04/10 jQuery
zTree异步加载展开第一级节点的实现方法
2017/09/05 Javascript
node.js学习之断言assert的使用示例
2017/09/28 Javascript
Ionic学习日记实现验证码倒计时
2018/02/08 Javascript
vuex与组件联合使用的方法
2018/05/10 Javascript
Django+Vue实现WebSocket连接的示例代码
2019/05/28 Javascript
js判断一个对象是数组(函数)的方法实例
2019/12/19 Javascript
JS禁用右键、禁用Ctrl+u、禁用Ctrl+s、禁用F12的实现代码
2020/12/01 Javascript
[15:35]教你分分钟做大人:天怒法师
2014/10/30 DOTA
python中字典(Dictionary)用法实例详解
2015/05/30 Python
Python排序算法实例代码
2017/08/10 Python
Django实战之用户认证(初始配置)
2018/07/16 Python
python判断计算机是否有网络连接的实例
2018/12/15 Python
Python3 导入上级目录中的模块实例
2019/02/16 Python
Python类反射机制使用实例解析
2019/12/30 Python
Python unittest 自动识别并执行测试用例方式
2020/03/09 Python
Django如何重置migration的几种情景
2021/02/24 Python
HTML5+CSS3实现机器猫
2016/10/17 HTML / CSS
美国知名的隐形眼镜电商:Contacts America
2019/11/19 全球购物
给酒店员工的表扬信
2014/01/11 职场文书
党员年度个人总结
2015/02/14 职场文书
建国大业电影观后感
2015/06/01 职场文书
海洋天堂观后感
2015/06/05 职场文书
安全教育培训制度
2015/08/06 职场文书
学生病假条怎么写
2015/08/17 职场文书
Pytorch数据读取之Dataset和DataLoader知识总结
2021/05/23 Python
详解Java实践之抽象工厂模式
2021/06/18 Java/Android