php使用正则表达式提取字符串中尖括号、小括号、中括号、大括号中的字符串

 更新时间:2020年04月05日 22:31:49   投稿:zxhpj  
PHP使用正则表达式提取字符串中尖括号<>、小括号()、中括号[]、大括号{}中的字符示例,需要的朋友可以参考下

一、小括号()、中括号[]、大括号的区别

 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://www.jb51.net/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:都过了验证器的验证,验证器见参考资料。

PS:这里再为大家提供2款非常方便的正则表达式工具供大家参考使用:

JavaScript正则表达式在线测试工具:
http://tools.jb51.net/regex/javascript

正则表达式在线生成工具:
http://tools.jb51.net/regex/create_reg

相关文章

  • php图片合成方法(多张图片合成一张)

    php图片合成方法(多张图片合成一张)

    下面小编就为大家分享一篇php图片合成方法(多张图片合成一张),具有很好的参考价值。希望对大家有所帮助。一起跟随小编过来看看吧
    2017-11-11
  • 100多行PHP代码实现socks5代理服务器[2]

    100多行PHP代码实现socks5代理服务器[2]

    这篇文章主要介绍了100多行PHP代码实现socks5代理服务器,需要的朋友可以参考下
    2016-05-05
  • 在win7中搭建Linux+PHP 开发环境

    在win7中搭建Linux+PHP 开发环境

    这篇文章会以一个概览的形式介绍我的 PHP 开发环境,列出我使用的工具,但配置过程不会太详细。有需要的朋友可以参考下。
    2014-10-10
  • laravel如何开启跨域功能示例详解

    laravel如何开启跨域功能示例详解

    这篇文章主要给大家介绍了关于laravel如何开启跨域功能的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面跟着小编来一起学习学习吧。
    2017-08-08
  • 获得Google PR值的PHP代码

    获得Google PR值的PHP代码

    获得Google PR值的PHP代码...
    2007-01-01
  • PHP等比例压缩图片的实例代码

    PHP等比例压缩图片的实例代码

    本文通过一段简单的代码给大家介绍PHP等比例压缩图片的方法,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧
    2018-07-07
  • PHP中仿制 ecshop验证码实例

    PHP中仿制 ecshop验证码实例

    这篇文章主要介绍了PHP中仿制 ecshop验证码实例,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-01-01
  • PHP Composer自动加载使用实战

    PHP Composer自动加载使用实战

    这篇文章主要为大家介绍了PHP Composer自动加载使用实战示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • CTF中的PHP特性函数解析之上篇

    CTF中的PHP特性函数解析之上篇

    这篇文章主要为大家介绍了CTF中的PHP特性函数解析,本文分三篇此篇为上篇,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • php实现的太平洋时间和北京时间互转的自定义函数分享

    php实现的太平洋时间和北京时间互转的自定义函数分享

    这篇文章主要介绍了php实现的太平洋时间和北京时间互转的自定义函数分享,主要靠date_default_timezone_set函数来实现,需要的朋友可以参考下
    2014-08-08

最新评论