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.MVC的模板标签系统(五)
Sep 05 PHP
比较简单实用的PHP无限分类源码分享(思路不错)
Oct 13 PHP
php数组相加 array(“a”)+array(“b”)结果还是array(“a”)
Sep 19 PHP
IIS+fastcgi下PHP运行超时问题的解决办法详解
Jun 20 PHP
php使用filter过滤器验证邮箱 ipv6地址 url验证
Dec 25 PHP
ThinkPHP控制器间实现相互调用的方法
Oct 31 PHP
PHP实现163邮箱自动发送邮件
Mar 29 PHP
PHP  实现等比压缩图片尺寸和大小实例代码
Oct 08 PHP
详解yii2使用多个数据库的案例
Jun 16 PHP
完美解决Thinkphp3.2中插入相同数据的问题
Aug 01 PHP
php微信公众号开发之二级菜单
Oct 20 PHP
PHP实现的数据对象映射模式详解
Mar 20 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
第十一节 重载 [11]
2006/10/09 PHP
php与paypal整合方法
2010/11/28 PHP
php实现文件下载更能介绍
2012/11/23 PHP
解析php扩展php_curl.dll不加载的解决方法
2013/06/26 PHP
解决ThinkPHP下使用上传插件Uploadify浏览器firefox报302错误的方法
2015/12/18 PHP
如何通过View::first使用Laravel Blade的动态模板详解
2017/09/21 PHP
PHP快速导出百万级数据到CSV或者EXCEL文件
2020/11/27 PHP
js利用Array.splice实现Array的insert/remove
2009/01/13 Javascript
让Firefox支持event对象实现代码
2009/11/07 Javascript
javascript作用域容易记错的两个地方分析
2012/06/22 Javascript
JS控制弹出新页面窗口位置和大小的方法
2015/03/02 Javascript
jQuery插件uploadify实现ajax效果的图片上传
2016/06/18 Javascript
JS实现表单验证功能(验证手机号是否存在,验证码倒计时)
2016/10/11 Javascript
js从输入框读取内容,比较两个数字的大小方法
2017/03/13 Javascript
JavaScript设计模式之代理模式详解
2017/06/09 Javascript
集合Bootstrap自定义confirm提示效果
2017/09/19 Javascript
JS实现为动态添加的元素增加事件功能示例【基于事件委托】
2018/03/21 Javascript
Vue.js进阶知识点总结
2018/04/01 Javascript
node.js文件操作系统实例详解
2019/11/05 Javascript
Python实现统计英文单词个数及字符串分割代码
2015/05/28 Python
各个系统下的Python解释器相关安装方法
2015/10/12 Python
Anaconda2 5.2.0安装使用图文教程
2018/09/19 Python
Python 一句话生成字母表的方法
2019/01/02 Python
python3用PIL把图片转换为RGB图片的实例
2019/07/04 Python
PyCharm配置anaconda环境的步骤详解
2020/07/31 Python
学习Python爬虫的几点建议
2020/08/05 Python
python3中数组逆序输出方法
2020/12/01 Python
python3定位并识别图片验证码实现自动登录功能
2021/01/29 Python
中外合拍动画首获奥斯卡提名,“上海出品”《飞奔去月球》能否拿下最终大奖?
2021/03/16 国漫
纯CSS3制作页面切换效果的实例代码
2019/05/30 HTML / CSS
LODI女鞋在线商店:阿利坎特的鞋类品牌
2019/02/15 全球购物
商务专员岗位职责
2013/11/23 职场文书
技术学校毕业生求职信分享
2013/12/02 职场文书
应届毕业生求职信范文分享
2013/12/26 职场文书
2014年医院科室工作总结
2014/12/20 职场文书
python3+PyQt5+Qt Designer实现界面可视化
2021/06/10 Python