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实现采集程序原理和简单示例代码
Mar 18 PHP
实用函数8
Nov 08 PHP
PHP常用代码大全(新手入门必备)
Jun 29 PHP
PHP函数microtime()用法与说明
Dec 04 PHP
php下获取http状态的实现代码
May 09 PHP
PHP与MYSQL中UTF8 中文排序示例代码
Oct 23 PHP
php格式输出文件var_export函数实例
Nov 15 PHP
Yii框架在页面输出执行sql语句以方便调试的实现方法
Dec 24 PHP
ThinkPHP V2.2说明文档没有说明的那些事实例小结
Jul 01 PHP
PHP magento后台无法登录问题解决方法
Nov 24 PHP
php获取今日开始时间和结束时间的方法
Feb 27 PHP
PHP实现的DES加密解密封装类完整实例
Apr 29 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 fsockopen写的HTTP下载的类
2007/02/22 PHP
关于zend studio 出现乱码问题的总结
2013/06/23 PHP
php的declare控制符和ticks教程(附示例)
2014/03/21 PHP
PHP中addslashes与mysql_escape_string的区别分析
2016/04/25 PHP
PHP实现基于面向对象的mysqli扩展库增删改查操作工具类
2017/07/18 PHP
javascript深入理解js闭包
2010/07/03 Javascript
javascript开发技术大全-第1章javascript概述
2011/07/03 Javascript
js数组的操作详解
2013/03/27 Javascript
jquery设置控件位置的方法
2013/08/21 Javascript
jQuery实现图片信息的浮动显示实例代码
2013/08/28 Javascript
js弹窗返回值详解(window.open方式)
2014/01/11 Javascript
jQuery中hasClass()方法用法实例
2015/01/06 Javascript
jQuery表单验证插件解析(推荐)
2016/07/21 Javascript
webix+springmvc session超时跳转登录页面
2016/10/30 Javascript
Nodejs进阶:如何将图片转成datauri嵌入到网页中去实例
2016/11/21 NodeJs
全面解析node 表单的图片上传
2016/11/21 Javascript
Angularjs中使用指令绑定点击事件的方法
2017/03/30 Javascript
vue2 自定义动态组件所遇到的问题
2017/06/08 Javascript
Vue项目中引入外部文件的方法(css、js、less)
2017/07/24 Javascript
基于Bootstrap表单验证功能
2017/11/17 Javascript
windows下更新npm和node的方法
2017/11/30 Javascript
mpvue构建小程序的方法(步骤+地址)
2018/05/22 Javascript
基于axios 解决跨域cookie丢失的问题
2018/09/26 Javascript
layDate插件设置开始和结束时间
2018/11/15 Javascript
Vue中CSS动画原理的实现
2019/02/13 Javascript
js+html实现周岁年龄计算器
2019/06/25 Javascript
python数据类型_字符串常用操作(详解)
2017/05/30 Python
pandas 读取各种格式文件的方法
2018/06/22 Python
python命令行工具Click快速掌握
2019/07/04 Python
Python符号计算之实现函数极限的方法
2019/07/15 Python
使用Django实现把两个模型类的数据聚合在一起
2020/03/28 Python
深入浅出CSS3 background-clip,background-origin和border-image教程
2011/01/27 HTML / CSS
精彩的英文自荐信
2014/01/30 职场文书
工作批评与自我批评范文
2014/10/16 职场文书
2014年妇联工作总结
2014/11/21 职场文书
会计岗位工作总结
2015/08/12 职场文书