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次
测试代码
$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款⾮常⽅便的正则表达式⼯具供⼤家参考使⽤:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论