当前位置:首页 > Web开发 > 正文

php 正则表达示中的原子

2024-03-31 Web开发

原子是正则表达示里面的最小单位,原子说白了就是需要匹配的内容。一个成立的正则表达示当中必须最少要有一个原子。大理石平台精度等级

所有可见不可见的字符就是原子

说明:我们见到的空格、回车、换行、0-9、A-Za-z、中文、标点符号、特殊符号全为原子。

在做原子的实例前我们先来讲解一个函数,preg_match:

int preg_match ( string $正则 , string $字符串 [, array &$结果] )

功能:根据$正则变量,匹配$字符串变量。如果存在则返回匹配的个数,把匹配到的结果放到$结果变量里。如果没有匹配到结果返回0。

注:上面是preg_match常用的主要几个参数。我在上面将另外几个参数没有列出来。因为,另外两个参数太不常用了。

我们来通过实验来证明:

<?php //定义一个变量叫zz,放正则表达示。为了方便大家记忆,如果你英文比较ok,建议把变量名还是写成英文的$pattern。 $zz = ‘/a/‘; $string = ‘ddfdjjvi2jfvkwkfi24‘; if(preg_match($zz, $string, $matches)){    echo ‘匹配到了,结果为:‘;    var_dump($matches); }else{    echo ‘没有匹配到‘; } ?>

因为我希望的是匹配a,而$string当是是不存在a的,所以不成功。

<?php $zz = ‘/wq/‘; $string = ‘ssssswqaaaaaa‘; if(preg_match($zz, $string, $matches)){    echo ‘匹配到了,结果为:‘;    var_dump($matches); }else{    echo ‘没有匹配到‘; } ?>

上面的字符串中s后存在wq,因此匹配成功。

接下来我们匹配一个空格试试:

<?php $zz = ‘/ /‘; $string = ‘sssssw aaaaa‘; if(preg_match($zz, $string, $matches)){    echo ‘匹配到了,结果为:‘;    var_dump($matches); }else{    echo ‘没有匹配到‘; } ?>

执行结果如下:

因上,$string这个变量的w字符后存在一个空格。所以匹配成功,输出了字符串类型,长度为1。只不过我们的肉眼不可见,看不到这个字符串而已。

特殊标识的原子

原子说明
\d   匹配一个0-9  
\D   除了0-9以外的所有字符  
\w   a-zA-Z0-9_  
\W   除了0-9A-Za-z_以外的所有字符  
\s   匹配所有空白字符\n \t \r 空格  
\S   匹配所有非空白字符  
[ ]   指定范围的原子  


这个个需要记住,最好达到默写级别。记忆的时候成对记忆,\d是匹配一个0-9,那么\D 就是除了0-9以外的所有字符。
上面已经说明的很清楚了,我们进行实验一步一步对这些进行学习。

请你在学习的时候,对于这些原子务必达到默写级别。因为,我们以后做实验的时候,一点一点你就学会了。

\d匹配一个0-9

<?php $zz = ‘/\d/‘; $string = ‘我爱喝9你爱不爱喝‘; if(preg_match($zz, $string, $matches)){    echo ‘匹配到了,结果为:‘;    var_dump($matches); }else{    echo ‘没有匹配到‘; } ?>

\D匹配一个非0-9的值

<?php $zz = ‘/\D/‘; $string = ‘121243中23453453‘; if(preg_match($zz, $string, $matches)){    echo ‘匹配到了,结果为:‘;    var_dump($matches); }else{    echo ‘没有匹配到‘; } ?>

匹配成功,匹配到了中。因为它不是0-9之间的字符。

\w匹配一个a-zA-Z0-9_

<?php $zz = ‘/\w/‘; $string = ‘新中_国万岁呀万岁‘; if(preg_match($zz, $string, $matches)){    echo ‘匹配到了,结果为:‘;    var_dump($matches); }else{    echo ‘没有匹配到‘; } ?>

匹配成功,匹配到了下划线。

\W匹配一个非a-zA-Z0-9_

<?php $zz = ‘/\w/‘; $string = ‘afasABCWEQR44231284737‘; if(preg_match($zz, $string, $matches)){    echo ‘匹配到了,结果为:‘;    var_dump($matches); }else{    echo ‘没有匹配到‘; } ?>

匹配失败。因为,上面上面全是a-zA-Z0-9_,没有非a-zA-Z0-9_。

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/39929.html