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获得用户使用的代理服务器ip即真实ip
Dec 31 PHP
模拟flock实现文件锁定
Feb 14 PHP
关于Intype一些小问题的解决办法
Mar 28 PHP
解析php中const与define的应用区别
Jun 18 PHP
php旋转图片90度的方法
Nov 07 PHP
采用header定义为文件然后readfile下载(隐藏下载地址)
Jan 31 PHP
Smarty模板学习笔记之Smarty简介
May 20 PHP
PHP通过反射动态加载第三方类和获得类源码的实例
Nov 27 PHP
PHP开发制作一个简单的活动日程表Calendar
Jun 20 PHP
Laravel框架文件上传功能实现方法示例
Apr 16 PHP
PHP终止脚本运行三种实现方法详解
Sep 01 PHP
Linux系统下安装PHP7.3版本
Jun 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数组函数序列之array_unshift() 在数组开头插入一个或多个元素
2011/11/07 PHP
在windows平台上构建自己的PHP实现方法(仅适用于php5.2)
2013/07/05 PHP
php根据一个给定范围和步进生成数组的方法
2015/06/19 PHP
PHP中非常有用却鲜有人知的函数集锦
2019/08/17 PHP
JQuery EasyUI 对话框的使用方法
2010/10/24 Javascript
createElement与createDocumentFragment的点点区别小结
2011/12/19 Javascript
javascript为下拉列表动态添加数据项
2014/05/23 Javascript
JavaScript截取字符串的2个函数介绍
2014/08/27 Javascript
jQuery语法小结(超实用)
2015/12/31 Javascript
基于JavaScript代码实现随机漂浮图片广告
2016/01/05 Javascript
7个去伪存真的JavaScript面试题
2016/01/07 Javascript
javascript如何实现360度全景照片问题汇总
2016/04/04 Javascript
Jquery ui datepicker设置日期范围,如只能隔3天【实现代码】
2016/05/04 Javascript
JS回调函数简单用法示例
2017/02/09 Javascript
JS库之Three.js 简易入门教程(详解之一)
2017/09/13 Javascript
微信小程序实现文字跑马灯效果
2020/05/26 Javascript
详解jquery和vue对比
2019/04/16 jQuery
[01:09:01]完美世界DOTA2联赛循环赛 Magma vs PXG BO2第一场 10.28
2020/10/28 DOTA
python网络编程学习笔记(八):XML生成与解析(DOM、ElementTree)
2014/06/09 Python
Python使用Flask框架获取当前查询参数的方法
2015/03/21 Python
如何使用python爬取csdn博客访问量
2016/02/14 Python
详解Python中的变量及其命名和打印
2016/03/11 Python
Python实现PS图像调整之对比度调整功能示例
2018/01/26 Python
详解Python中的分组函数groupby和itertools)
2018/07/11 Python
python 3.6.7实现端口扫描器
2019/09/04 Python
Django之模板层的实现代码
2019/09/09 Python
django创建超级用户过程解析
2019/09/18 Python
学python爬虫能做什么
2020/07/29 Python
jupyter notebook更换皮肤主题的实现
2021/01/07 Python
公益广告语集锦
2014/03/13 职场文书
市场拓展计划书
2014/05/03 职场文书
社区志愿者培训方案
2014/06/10 职场文书
2014年挂职干部工作总结
2014/12/06 职场文书
春季运动会开幕词
2015/01/28 职场文书
高一作文之暖冬
2019/11/09 职场文书
python第三方网页解析器 lxml 扩展库与 xpath 的使用方法
2021/04/06 Python