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 相关文章推荐
让你的WINDOWS同时支持MYSQL4,MYSQL4.1,MYSQL5X
Dec 06 PHP
PHP生成Flash动画的实现代码
Mar 12 PHP
php 抽象类的简单应用
Sep 06 PHP
PHP仿盗链代码
Jun 03 PHP
CI框架数据库查询之join用法分析
May 18 PHP
Windows Server 2008 R2和2012中PHP连接MySQL过慢的解决方法
Jul 02 PHP
php mysql获取表字段名称和字段信息的三种方法
Nov 13 PHP
php加密之discuz内容经典加密方式实例详解
Feb 04 PHP
PHP/HTML混写的四种方式总结
Feb 27 PHP
PHP去除字符串最后一个字符的三种方法实例
Mar 01 PHP
php通过pecl方式安装扩展的实例讲解
Feb 02 PHP
PHP面向对象程序设计继承用法简单示例
Dec 28 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
PHP EOT定界符的使用详解
2008/09/30 PHP
php判断/计算闰年的方法小结【三种方法】
2019/07/06 PHP
Laravel 错误提示本地化的实现
2019/10/22 PHP
用javascript来实现动画导航效果的代码
2007/12/16 Javascript
基于jQuery的Tab选项框效果代码(插件)
2011/03/01 Javascript
javascript 得到文件后缀名的思路及实现
2020/05/09 Javascript
javascript中的this详解
2014/12/08 Javascript
JQuery中clone方法复制节点
2015/05/18 Javascript
jQuery实现简易的天天爱消除小游戏
2015/10/16 Javascript
详解jQuery Mobile自定义标签
2016/01/06 Javascript
Jquery插件仿百度搜索关键字自动匹配功能
2016/05/11 Javascript
nginx配置React静态页面的方法教程
2017/11/03 Javascript
利用vue和element-ui设置表格内容分页的实例
2018/03/02 Javascript
vue项目添加多页面配置的步骤详解
2019/05/22 Javascript
javascript实现贪吃蛇小练习
2020/07/05 Javascript
[04:52]第二届DOTA2亚洲邀请赛主赛事第一天比赛集锦:OG娜迦海妖放大配合谜团大中3人
2017/04/02 DOTA
Python OpenCV处理图像之图像像素点操作
2018/07/10 Python
Sanic框架流式传输操作示例
2018/07/18 Python
从请求到响应过程中django都做了哪些处理
2018/08/01 Python
解决pycharm安装后代码区不能编辑的问题
2018/10/28 Python
解决Django提交表单报错:CSRF token missing or incorrect的问题
2020/03/13 Python
python 下载文件的几种方法汇总
2021/01/06 Python
英国网络托管和域名领导者:Web Hosting UK
2017/10/15 全球购物
意大利网上药房:Farmacia 33
2020/01/27 全球购物
古驰英国官网:GUCCI英国
2020/03/07 全球购物
若干个Java基础面试题
2015/05/19 面试题
2014元旦晚会策划方案
2014/02/19 职场文书
基督教婚礼主持词
2014/03/14 职场文书
个人函授自我鉴定
2014/03/25 职场文书
赔偿协议书范本
2014/09/12 职场文书
2014年帮扶工作总结
2014/11/26 职场文书
新郎接新娘保证书
2015/05/08 职场文书
Redis如何一键部署脚本
2021/04/12 Redis
Python连续赋值需要注意的一些问题
2021/06/03 Python
一篇文章带你学习Mybatis-Plus(新手入门)
2021/08/02 Java/Android
Ubuntu安装Mysql+启用远程连接的完整过程
2022/06/21 Servers