大家好,又见面了,我是你们的朋友全栈君。
一、正则表达式语法(Perl风格)
1、模式规则 /php/ 字符串前后加上两条斜杠即可
2、匹配函数 preg_match(’/php/’,php) 参数1 模式 参数2 字符串
二、正则表达式中的元素
介绍 1、正则表达式中包含三种元素分别为:量词、元字符、修饰符 2、前导字符串:就是符号前面的一个字符或字符串
量词
量词 | 说明 |
---|---|
| 匹配任何至少包含一个前导字符串 |
* | 匹配任何包含零个或多个前导字符串 |
? | 匹配任何包含零个或1个前导字符串 |
. | 匹配任意一个字符串 |
{x} | 匹配任何包含x个前导字符串 |
{x,y} | 匹配任何包含 x 到 y 个前导字符串 |
{x,} | 匹配任何包含至少x个前导字符串 |
^ | 匹配字符串的行首 |
$ | 匹配字符串的行尾 |
| | 选择符 匹配字符串的左边或者右边 |
() | 分组,提取 |
//量词 //preg_match()函数匹配成功返回1,失败返回0 echo preg_match('/a /','abc');//返回1 echo preg_match('/a*/','abc');//返回1 echo preg_match('/a?/','abc');//返回1 echo preg_match('/./','abc');//返回1 echo preg_match('/a{2}/','aabc');//返回1 echo preg_match('/a{2,5}/','aaabc');//返回1 echo preg_match('/a{2,}/','aaaaabc');//返回1 echo preg_match('/^a/','bac');//返回0 echo preg_match('/^a/','abc');//返回1 echo preg_match('/a$/','abc');//返回0 echo preg_match('/a$/','cba');//返回1 echo preg_match('/a|b/','a');//返回1 echo preg_match('/a|b/','b');//返回1 echo preg_match('/(abc) /','abcd');//返回1
元字符
元字符 | 说明 |
---|---|
[a-z] | 匹配任何包含小写字母a-z的字符串 |
[A-Z] | 匹配任何包含大写字母A-Z的字符串 |
[0-9] | 匹配任何包含0-9的字符串 |
[abc] | 匹配任何包含小写字母a,b,c的字符串 |
[^abc] | 匹配任何不包含小写字母a,b,c的字符串 |
[a-zA-Z0-9_] | 匹配任何包含a-zA-Z0-9和下划线的字符串 |
w | 匹配任何包含a-zA-Z0-9和下划线的字符串 |
W | 匹配任何不包含a-zA-Z0-9和下划线的字符串 |
d | 匹配任何包含数字字符 |
D | 匹配任何非数字字符 |
s | 匹配任何空白字符 |
S | 匹配任何非空白字符 |
b | 匹配是否到达了单词边界 |
B | 匹配没有到达了单词边界 |
匹配正则中的特殊字符 |
//元字符 echo preg_match('/[a-z]/','abc');//返回1 echo preg_match('/[A-Z]/','ABC');//返回1 echo preg_match('/[0-9]/','123');//返回1 echo preg_match('/[abc]/', 'a');//返回1 echo preg_match('/[^abc]/', 'd');//返回1 echo preg_match('/[a-zA-Z0-9_]/', 'aD45_');//返回1 echo preg_match('/w/', 'aD45_');//返回1 echo preg_match('/W/', 'aD45_');//返回0 echo preg_match('/d/', '123456');//返回1 echo preg_match('/D/', '123456');//返回0 echo preg_match('/d/', '123456');//返回1 echo preg_match('/s/', ' ');//返回1 echo preg_match('/S/', ' ');//返回0 //单词尾部边界 echo preg_match('/atb/', 'cat');//返回1 //头单词部边界 echo preg_match('/bat/', 'attribute');//返回1 //没有到达边界 echo preg_match('/Bat/', 'attribute');//返回0 //特殊字符 $ ^ * () = {} [] | \ : <> echo preg_match('/$/', '$');//返回1
修饰符
修饰符 | 说明 |
---|---|
i | 完全不区分大小写 |
m | 可以采用多行识别,遇到换行也承认匹配规则 |
x | 忽略掉规则模式中的空白字符 |
A | 强制从头开始匹配 |
U | 禁止贪婪匹配,只跟踪到最近的一个匹配符并结束 |
//修饰符 //i 不区分大小写 echo preg_match('/abcd/','AbcD');//返回0 echo preg_match('/abcd/i','AbcD');//返回1 //m 多行识别 $str = '1a 1a'; preg_match_all('/^1a/',$str,$arr); print_r($arr); //结果为Array ( [0] => Array ( [0] => 1a ) ) //默认从头到尾匹配,所以只匹配到一个 preg_match_all('/^1a/m',$str,$arr);//返回1 print_r($arr); //结果为Array ( [0] => Array ( [0] => 1a [1] => 1a ) ) //每行都会使用规则,所以匹配的到二个,注意第二行前面不要有空格避免干扰 //x 忽略模式的空格 echo preg_match('/a b/','ab');//返回0 echo preg_match('/a b/x','ab');//返回1 //A 强制开头匹配 echo preg_match('/ab/','catabc');//返回1 echo preg_match('/ab/A','catabc');//返回0 echo preg_match('/ab/A','abcdef');//返回1 //U 禁止贪婪匹配 preg_match_all('/phpw php/','php123phpphp456php',$arr); print_r($arr); //结果为Array ( [0] => Array ( [0] => php123phpphp456php ) ) preg_match_all('/phpw php/U','php123phpphp456php',$arr); print_r($arr); //结果为Array ( [0] => Array ( [0] => php123php [1] => php456php ) ) //禁止贪婪匹配后,会就近匹配
三、Perl风格函数
1、preg_grep() 搜索数组中的所有元素,返回与某个模式匹配的字符串数组
2、preg_match() 搜索模式,匹配返回true,不匹配返回false
3、preg_match_all() 在字符串匹配模式的所有出现,然后将所有匹配的全部放入数组
4、preg_quote() 将特殊字符转义 特殊字符包含 $ ^ * () = {} [] | : <> 定界正则,在每一个对于正则表达式语法而言有特殊含义的字符前插入一个反斜杠
5、preg_replace() 替换模式的所有出现,然后替换成想要的字符串返回出来
6、preg_split() 以不区分大小写将字符串划分不同的元素
代码语言:javascript复制 //风格函数 //preg_grep() $arr = array('php5','php6','php7','css','html'); $out = preg_grep('/php[0-9]/', $arr); print_r($out); //结果为Array ( [0] => php5 [1] => php6 [2] => php7 ) //preg_match() echo preg_match('/php[0-9]/','php5');//返回1 //preg_match_all() preg_match_all('/php[0-9]/','php5php6php7',$arr); print_r($arr); //结果为Array ( [0] => Array ( [0] => php5 [1] => php6 [2] => php7 ) ) //preg_quote() echo preg_quote(' $ ^ * () = {} [] | \ : <>'); //结果为 $ ^ * () = {} [] | \ : <> //preg_replace() echo preg_replace('/php/','python', 'php1php2php3'); //结果为 python1python2python3 //preg_split() $str = preg_split('/a/', 'cbabc'); print_r($str); //结果为rray ( [0] => cb [1] => bc )
学习总结
学习好正则表达式,不是一朝一夕的事,要掌握好这些基本的元素。量词、元字符、修饰符,每个都不能忽视,搭配起来使用,多多练习才能熟能生巧。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/200730.html原文链接:https://javaforall.cn