欢迎光临
我们一直在努力

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

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次

测试代码:

  1. $str="你好<我>(爱)[北京]{天安门}"
  2.  
  3. echo f1($str); //返回你好  
  4. echo f2($str); //返回我  
  5. echo f3($str); //返回爱  
  6. echo f4($str); //返回北京  
  7. echo f5($str); //返回天安门 
  8.  
  9. function f1($str)  
  10. {  
  11. $result = array();  
  12. preg_match_all("/^(.*)(?:<)/i",$str$result);  
  13. return $result[1][0];  
  14. }  
  15.   
  16. function f2($str)  
  17. {  
  18. $result = array();  
  19. preg_match_all("/(?:<)(.*)(?:>)/i",$str$result);  
  20. return $result[1][0];  
  21.  
  22. function f3($str)  
  23. {  
  24. $result = array();  
  25. preg_match_all("/(?:\()(.*)(?:\))/i",$str$result);  
  26. return $result[1][0];  
  27.  
  28. function f4($str)  
  29. {  
  30. $result = array();  
  31. preg_match_all("/(?:\[)(.*)(?:\])/i",$str$result);  
  32. return $result[1][0];  
  33.  
  34. function f5($str)  
  35. {  
  36. $result = array();  
  37. preg_match_all("/(?:\{)(.*)(?:\})/i",$str$result);  
  38. return $result[1][0];  
  39. }  

PS: (?:字符) 表示不捕获这个字符。貌似PHP不支持将字符换成括号。

否则的话可以将环视给嵌套进去,就可以循环匹配了。

PS2:环视:(?!) (?=) (?<!) (?<=)

有小于号的在右侧匹配,没有的在左侧匹配。感叹号表示不等,等于号表示相等。

PS3:都过了验证器的验证,验证器见参考资料。 

赞(0) 本模板价: 打赏
未经允许不得转载:站长分享圈 » php使用正则表达式提取字符串中尖括号、小括号、中括号、大括号中的字符串