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 FOR MYSQL 代码生成助手(根据Mysql里的字段自动生成类文件的)
Jul 23 PHP
php读取mysql乱码,用set names XXX解决的原理分享
Dec 29 PHP
php判断终端是手机还是电脑访问网站的思路及代码
Apr 24 PHP
php中print(),print_r(),echo()的区别详解
Dec 01 PHP
PHP判断网络文件是否存在的方法
Mar 12 PHP
利用“多说”制作留言板、评论系统
Jul 14 PHP
PHP处理数组和XML之间的互相转换
Jun 02 PHP
修改Laravel5.3中的路由文件与路径
Aug 10 PHP
PHP如何获取当前主机、域名、网址、路径、端口等参数
Jun 09 PHP
PHP实现的折半查询算法示例
Oct 09 PHP
php实现mysql连接池效果实现代码
Jan 25 PHP
PHP中__set()实例用法和基础讲解
Jul 23 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
如何修改和添加Apache的默认站点目录
2013/07/05 PHP
php有道翻译api调用方法实例
2014/12/22 PHP
利用PHP访问MySql数据库的逻辑操作以及增删改查的实例讲解
2017/08/30 PHP
最佳的addEvent事件绑定是怎样诞生的
2011/10/24 Javascript
ajax与302响应代码测试
2013/10/23 Javascript
改变隐藏的input中value的值代码
2013/12/30 Javascript
从JQuery源码分析JavaScript函数的apply方法与call方法
2014/09/25 Javascript
Javascript实现获取及设置光标位置的方法
2015/07/21 Javascript
使用Jasmine和Karma对AngularJS页面程序进行测试
2016/03/05 Javascript
Javascript必知必会(四)js类型转换
2016/06/08 Javascript
JSON格式的时间/Date(2367828670431)/格式转为正常的年-月-日 格式的代码
2016/07/27 Javascript
JS实现颜色动态淡化效果
2017/03/06 Javascript
Angular.js 4.x中表单Template-Driven Forms详解
2017/04/25 Javascript
gulp解决跨域的配置文件问题
2017/06/08 Javascript
详解webpack模块加载器兼打包工具
2018/09/11 Javascript
使用webpack构建应用的方法步骤
2019/03/04 Javascript
使用layui实现的左侧菜单栏以及动态操作tab项方法
2019/09/10 Javascript
Vue实现简易计算器
2020/02/25 Javascript
vue+axios 拦截器实现统一token的案例
2020/09/11 Javascript
Python中用字符串调用函数或方法示例代码
2017/08/04 Python
python随机在一张图像上截取任意大小图片的方法
2019/01/24 Python
一行Python代码过滤标点符号等特殊字符
2019/08/12 Python
Django自定义模板过滤器和标签的实现方法
2019/08/21 Python
python Xpath语法的使用
2020/11/26 Python
Appium+Python实现简单的自动化登录测试的实现
2021/01/26 Python
会走动的图形html5时钟示例
2014/04/27 HTML / CSS
分享29个基于Bootstrap的HTML5响应式网页设计模板
2015/11/19 HTML / CSS
一些Unix笔试题和面试题
2013/01/22 面试题
运输服务质量承诺书
2014/03/27 职场文书
国庆节演讲稿
2014/05/27 职场文书
电视新闻稿
2015/07/17 职场文书
小学五年级班主任工作经验交流材料
2015/11/02 职场文书
2016年教师节慰问信
2015/12/01 职场文书
详解TypeScript中的类型保护
2021/04/29 Javascript
baselines示例程序train_cartpole.py的ImportError
2022/05/20 Python
SpringBoot详解自定义Stater的应用
2022/07/15 Java/Android