从编码角度看正则表达式的\w\s\b\d具体含义

从基础的ascii码找出正则表达式元字符的具体意义。

 1 <?php 
 2 //从最基础的编码ascii码表的128个字符 了解正则 \w \s \b \d 所对应的所有匹配
 3 $reg_w='/\w/';
 4 $reg_s='/\s/';
 5 $reg_b='/\b/';
 6 $reg_d='/\d/';
 7 $str_w='';$str_s='';$str_b='';$str_d='';
 8 echo '所有ascii码表的字符:';
 9 for($i=0;$i<=127;$i++){
10  echo  chr($i); 
11  if(preg_match($reg_w,chr($i))){ $str_w.=chr($i); }
12  if(preg_match($reg_s,chr($i))){ $str_s.='('.$i.')'.chr($i); }
13  if(preg_match($reg_b,chr($i))){ $str_b.=chr($i); }
14  if(preg_match($reg_d,chr($i))){ $str_d.=chr($i); }
15  
16 }
17  echo '<br/>';
18  echo '\w 匹配的字符:'.$str_w.'<br/>';
19  echo '\s 匹配的字符:'.$str_s.' 注意: 空白符号一共有6个:水平制表符(9) 换行键(10) 垂直制表符(11) 换页键(12) 回车键(13) 空格(32) <br/>';
20  echo '\b 匹配的字符:'.$str_b.'<br/>';
21  echo '\d 匹配的字符:'.$str_d.'<br/>';
22 ?>

运行结果如下

所有ascii码表的字符:  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
\w 匹配的字符:0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz
\s 匹配的字符:(9) (10) (11) (12) (13) (32) 注意: 空白符号一共有6个:水平制表符(9) 换行键(10) 垂直制表符(11) 换页键(12) 回车键(13) 空格(32)
\b 匹配的字符:0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz
\d 匹配的字符:0123456789

发现\w 和\b存在相同之处

posted @ 2024-01-27 15:40  smxjue  阅读(65)  评论(0)    收藏  举报