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 相关文章推荐
一个颜色轮换的简单例子
Oct 09 PHP
php下intval()和(int)转换使用与区别
Jul 18 PHP
php图片上传存储源码并且可以预览
Aug 26 PHP
通过table标签,PHP输出EXCEL的实现方法
Jul 24 PHP
PHP编程风格规范分享
Jan 15 PHP
PHP使用CURL实现多线程抓取网页
Apr 30 PHP
详解PHP的Yii框架中日志的相关配置及使用
Dec 08 PHP
PHP判断文件是否被引入的方法get_included_files用法示例
Nov 29 PHP
详解提高使用Java反射的效率方法
Apr 29 PHP
Yii框架操作cookie与session的方法实例详解
Sep 04 PHP
PHP过滤器 filter_has_var() 函数用法实例分析
Apr 23 PHP
tp5.1框架数据库子查询操作实例分析
May 26 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中反射的应用
2013/06/18 PHP
你可能不知道PHP get_meta_tags()函数
2014/05/12 PHP
php随机显示指定文件夹下图片的方法
2015/07/13 PHP
讲解WordPress中用于获取评论模板和搜索表单的PHP函数
2015/12/28 PHP
php多线程并发实现方法
2016/09/30 PHP
PHP实现的迪科斯彻(Dijkstra)最短路径算法实例
2017/09/16 PHP
PHP单例模式数据库连接类与页面静态化实现方法
2019/03/20 PHP
关于Laravel-admin的基础用法总结和自定义model详解
2019/10/08 PHP
javascript写的简单的计算器,内容很多,方法实用,推荐
2011/12/29 Javascript
javascript 构造函数强制调用经验总结
2012/12/02 Javascript
AngularJS入门心得之directive和controller通信过程
2016/01/25 Javascript
jquery实现无刷新验证码的简单实例
2016/05/19 Javascript
批量下载对路网图片并生成html的实现方法
2016/06/07 Javascript
vue.js入门教程之计算属性
2016/09/01 Javascript
node.js实现复制文本到剪切板的功能
2017/01/23 Javascript
从零学习node.js之简易的网络爬虫(四)
2017/02/22 Javascript
基于JavaScript中字符串的match与replace方法(详解)
2017/12/04 Javascript
初探Vue3.0 中的一大亮点Proxy的使用
2018/12/06 Javascript
详解Python中内置的NotImplemented类型的用法
2015/03/31 Python
Python命令行参数解析模块getopt使用实例
2015/04/13 Python
Python中的元类编程入门指引
2015/04/15 Python
Django中模版的子目录与include标签的使用方法
2015/07/16 Python
Python paramiko模块的使用示例
2018/04/11 Python
python pandas dataframe 按列或者按行合并的方法
2018/04/12 Python
python实现逆序输出一个数字的示例讲解
2018/06/25 Python
基于python实现简单日历
2018/07/28 Python
用Python逐行分析文件方法
2019/01/28 Python
Python 把序列转换为元组的函数tuple方法
2019/06/27 Python
匈牙利最大的健身制造商和销售商:inSPORTline
2018/10/30 全球购物
暖通工程师岗位职责
2014/06/12 职场文书
毕业生代领毕业材料的授权委托书
2014/09/29 职场文书
2014年保安个人工作总结
2014/11/13 职场文书
2016先进工作者事迹材料
2016/02/25 职场文书
react中props 的使用及进行限制的方法
2021/04/28 Javascript
浅谈如何提高PHP代码质量之单元测试
2021/05/28 PHP
SpringBoot整合阿里云视频点播的过程详解
2021/12/06 Java/Android