PHP正则表达式基础必须掌握
生活随笔
收集整理的这篇文章主要介绍了
PHP正则表达式基础必须掌握
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
正则表达式
作用:
1,分割
2,匹配
3,查找
4,替换
一个正则表达式至少包含一个原子
正则表达式就是一个字符串
什么时候使用正则?
1,表单匹配
2,URl的重写,路由重写
3,小偷采集
如何使用正则表达PHP
PCRE库正则表达式库,大多数语言都在使用,通用
POSIX库
正则表达式的语法规则和组成部分
1,定界符
两个正斜线//,用户把需要匹配的模式放在定界符之间即可
除了字母,数字,斜线\之外的任何字符都可以作为定界符
# | !也是可以当做定界符的
2,原子
原子是正则表达式最基本的组成单元
1,普通字符作为原子 如a-z,A-Z 0-9等
2,一些特殊字符和转义后的元字符作为原子
如,索引的标点符号,但语句特殊意义的符号需要转义后才能作为原子,
如:\* \+ \. 等
3,一些非打印字符作为原子 如\f \n \r \t \v \cx
4,使用通用字符类型作为原子,如 \d \D \w \W \s \S
作用:
1,分割
2,匹配
3,查找
4,替换
一个正则表达式至少包含一个原子
正则表达式就是一个字符串
什么时候使用正则?
1,表单匹配
2,URl的重写,路由重写
3,小偷采集
如何使用正则表达PHP
PCRE库正则表达式库,大多数语言都在使用,通用
POSIX库
正则表达式的语法规则和组成部分
1,定界符
两个正斜线//,用户把需要匹配的模式放在定界符之间即可
除了字母,数字,斜线\之外的任何字符都可以作为定界符
# | !也是可以当做定界符的
2,原子
原子是正则表达式最基本的组成单元
1,普通字符作为原子 如a-z,A-Z 0-9等
2,一些特殊字符和转义后的元字符作为原子
如,索引的标点符号,但语句特殊意义的符号需要转义后才能作为原子,
如:\* \+ \. 等
3,一些非打印字符作为原子 如\f \n \r \t \v \cx
4,使用通用字符类型作为原子,如 \d \D \w \W \s \S
5, 自定义原子表([])作为原子 如'/[apj]sp/' '/[^apj]sp/'
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>正则是匹配</title> </head> <body><form action=""><input type="text" name="zz"><input type="submit" value="正则表达式匹配"></form></body> </html><?php header("Content-type: text/html; charset=utf-8"); // $pattern="/abc/"; // //如果匹配的到返回1,匹配不到返回0 // //=======================原子===================//// $pattern="/abc/"; //普通的原子 // $patten="/\./"; //特殊的原子需要反斜线的转义 // $pattern="/\n/"; //匹配非打印字符// /*=============6种通用原子开始===============*/// $pattern="/\d/"; //匹配任意一个数字 // $pattern="/\D/"; //陪陪除了数字之外的任意字符 // $pattern="/\w/"; //匹配数字,大小写字母,下划线 // $pattern="/\W/"; //匹配除了数字,字母下划线的任意字符 // $pattern="/\s/"; //匹配空白字符 // $pattern="/\S/"; //匹配除了空白符以外的任意字符 // /*=============6种通用原子结束===============*/// /*=============15种元字符开始===============*///$pattern="/go*gle/"; //*代表匹配前面的原子0次,1次或者多次 //$pattern="/go+gle/"; //+代表匹配前面的原则至少一次或者多次 //$pattern="/go?gle/"; //?智能匹配前面的原子0次或1次 //$pattern="/./"; //.匹配除了换行符以外的任意一个字符//$pattern="/a|b/"; //或者匹配,匹配a或者b //$pattern="/go{3}gle/"; //{n}匹配n次,可以匹配前面的n次原子,例如gooole可以匹配,如果goooogle是不能匹配的 //$pattern="/go{3,}gle/"; //{n,}可以匹配上面的原子大于n的 //$pattern="/go{1,3}gle/"; //{n,}可以匹配上面的原子大于n的//$pattern="/^我们是好人/"; //^符号必须是从头开始,否则全文有也是输出错误,不加^的话默认是全文匹配, //$pattern="/我们是好人$/"; //$ 必须以我们是好人结尾 //$pattern="/^我们是好人$/"; //开头^和$结尾,必须是全部匹配,原子相等 //$pattern="/^我们是.*好人$/"; //开头^和$结尾,中间可以是任意的字符 //$pattern="/\bis/"; // \b是必须以每个单词是is开头 //$pattern="/is\b/"; //必须是以is结尾 //$pattern="/\bis\b/"; //必须是以is开头和结尾 //$pattern="/\Bis/"; //is必须不能开头 //$pattern="/is\B/"; //不能以is结尾//$pattern="/[abc]/"; //相当于a或b或c,用户输入a或b或c都可以匹配 //$pattern="/[^abc]/"; //除了a,b,c都可以匹配//$pattern="/ab|cd/"; //可以匹配ab或者cd,相当于| //$pattern="/ab|cd:/"; //可以匹配到ab或者cd: //$pattern="/(ab|cd):/"; //可以匹配到ab:或者是cd: ,后向引用或者反向引用//$pattern="/<b>.*</b>/"; //匹配所有的<b>所有的内容</b>,这是贪婪模式 // 贪婪模式,第一个<b>到最后一个</b>的所有内容,包含<b>之间的所有的<b></b></b> //$pattern="/<b>.*?<\/b>/"; //.*?取消贪婪模式,输出第一个<b></b>标签之间的内容 // $str="<b>hao</b>are you<b></b>";//$pattern="/[.]/"; //单纯的.没有其他含义 //$pattern="/[.*]/"; //里面的.*等特殊字符会失去原有的意义,只要是带有.或*的字符串都可以匹配成功//匹配中文 $pattern="/[^x00-xff]/"; // /*=============15种元字符结束===============*/// /*=============模式修正符===============*/ // $pattern="/[a-z]/i";//可以匹配a-z的大小写都可以 //$pattern="/ab/i";//可以匹配ab的大小写都可以 //$pattern="/^ab/m"; //可以在每一行开始匹配,是否ab开头,^是以什么开头,多行匹配 //类似$str="a\nb";//$pattern="/./s";//.匹配除了换行符以外的任意一个字符,s是修正了.的换行符//$pattern="/a b c/x";// 模式中的空白忽略不计,除非他已经转义,输入abc是可以匹配成功的,但是a b c匹配不成功 //在正则表达式中最后添加e,e是eval()的缩写 //$pattern="/<b>.*?<\/b>/u" //U是贪婪模式,备注:.*?+U是取消取消贪婪模式=贪婪模式//$pattern="/abc$/";//默认情况下,是匹配以abc结尾的字符串,但是如果 //$str="dwedwedewabc\n";这样也是会匹配成功的,因为\n是换行符 //$pattern="/abc$/D"; 加D是更加严谨,换行的话直接报错的 // /*=============模式修正符结束===============*/// /*=============正则式优化方面===============*/ //例如: ?:http|https|ftp 这样的话在生成的数组会没有这一项 // 减少内存占用 // //在字符串中运行php代码: //在正则表达式中最后添加e,e是eval()的缩写 //例如$pattern="/http:\/\/\w+\.\w+\.(com|cn)/e"; //然后在preg_replace()中更改 //$str=preg_replace($pattern,'\'<a href="$0">\'.strtoupper("$0").\'</a>\'', $str); //上面的示例是将需要替换的值自动变成大写 // /*=============正则式优化方面结束============*//**************preg_match函数开始*******///preg_match($pattern,$str,$arr);//执行一次返回一次匹配结果//需要遍历出结果 /**************preg_match函数结束*******//**************preg_match_all函数开始*******///preg_match_all($pattern,$str,$arr);//返回一个数组//可以将全部的匹配结果匹配出来//如果这是打印var_dump($arr)会输出匹配后的数组//如果这是打印var_dump($arr[0])会输出匹配后的内容 /**************preg_match_all函数结束*******//**************preg_replace函数开始,推荐使用,重要!!*******/ //preg_replace($pattern,'替换内容',$arr); //返回直接替换后字符串 //(反向)后向引用就是将之前查询出的内容在preg_replace()的第二个函数直接引用 //因为第二个函数加载替换内容,可以直接放入$0或者\\0 //$0和\\0是根据正则式匹配前置出来的内容 //$0和\\0其实是数组,可以自己打印一下 /**************preg_replace结束******************************///另外的正则函数 //preg_grep //preg_split$str=$_GET['zz']; //测试接收if(preg_match($pattern,$str,$arr)){echo "<font color='green'>恭喜你,匹配成功</font><br/>";echo "<pre>";var_dump($arr);echo "</pre>"; }else{echo "<font color='red'>没有匹配到</font>";}
总结
以上是生活随笔为你收集整理的PHP正则表达式基础必须掌握的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 《java websocket》之 实现
- 下一篇: php公告滚动源码,如何利用JavaSc