特殊字符--元字符
以下说明了常见元字符的应用。
代码及执行结果:
1 <?php 2 $pattern='/test/'; 3 $str='abcdaftestbsdfeatest'; 4 var_dump(preg_match_all($pattern,$str,$arr)); 5 var_dump( $arr); 6 ?> 7 8 <?php 9 $pattern='/t\dst/'; //\d可以匹配0-9之间的任意一个数字,相当于[0-9] 10 $str='abcdaft0stbsdfeat8st'; 11 var_dump(preg_match_all($pattern,$str,$arr)); 12 var_dump( $arr); 13 ?> 14 15 <?php 16 $pattern='/t\Dst/'; //\D可以匹配0-9之外的任意一个字符 17 $str='abcdaft@stbsdfeat8st'; 18 var_dump(preg_match_all($pattern,$str,$arr)); 19 var_dump( $arr); 20 ?> 21 22 <?php 23 $pattern='/t\sst/'; //\s可以匹配一个空白字符,如换行符\n,回车符\r,制表符\t,垂直制表符 24 $str='abcdaft@stbsdfeat st'; 25 var_dump(preg_match_all($pattern,$str,$arr)); 26 var_dump( $arr); 27 ?> 28 29 <?php 30 $pattern='/t\sst/'; //\s可以匹配一个空白字符 31 $str="abcdaft\nstbsdfeatst";//换行符外用双引号 32 var_dump(preg_match_all($pattern,$str,$arr)); 33 var_dump( $arr); 34 ?> 35 36 <?php 37 $pattern='/t\wst/'; //\w可以匹配一个数字或字母或下划线 38 $str='abcdaft0stbsdfeat_sttast'; 39 var_dump(preg_match_all($pattern,$str,$arr)); 40 var_dump( $arr); 41 ?> 42 43 <?php 44 $pattern='/t.st/'; // .可以匹配除换行符以外的任意一个字符 45 $str="abcdaft\nstbsdfeat_sttast"; 46 var_dump(preg_match_all($pattern,$str,$arr)); 47 var_dump( $arr); 48 ?> 49 50 <?php 51 $pattern='/te*s*t/'; // *可以匹配前面的那个字符0次,1次,多次。 52 $str="testatstteeest"; 53 var_dump(preg_match_all($pattern,$str,$arr)); 54 var_dump( $arr); 55 ?> 56 57 <?php 58 $pattern='/te+s+t/'; // +可以匹配前面的那个字符1次,多次,不可以不出现。 59 $str="testatstteeest"; 60 var_dump(preg_match_all($pattern,$str,$arr)); 61 var_dump( $arr); 62 ?> 63 64 <?php 65 $pattern='/te?st/'; // +可以匹配前面的那个字符1次,0次。 66 $str="testatstteeest"; 67 var_dump(preg_match_all($pattern,$str,$arr)); 68 var_dump( $arr); 69 ?> 70 71 <?php 72 $pattern='/te{2}st/'; // +可以匹配前面的那个字符恰好出现2次。 73 $str="testatstteest"; 74 var_dump(preg_match_all($pattern,$str,$arr)); 75 var_dump( $arr); 76 ?> 77 78 <?php 79 $pattern='/te{2,}st/'; // +可以匹配前面的那个字符恰好出现2次及以上。 80 $str="testatstteeeeeest"; 81 var_dump(preg_match_all($pattern,$str,$arr)); 82 var_dump( $arr); 83 ?> 84 85 <?php 86 $pattern='/te{2,4}st/'; // +可以匹配前面的那个字符出现2次,不超过4次。 87 $str="testatstteeest"; 88 var_dump(preg_match_all($pattern,$str,$arr)); 89 var_dump( $arr); 90 ?> 91 92 <?php 93 $pattern='/t.{3,}st/'; 94 $str="testattteeesdst"; 95 var_dump(preg_match_all($pattern,$str,$arr)); 96 var_dump( $arr); 97 ?> 98 99 <?php 100 $pattern='/t.*st/'; //贪婪匹配,从第一个t开始匹配,尽可能多的囊括内容 101 $str="nutatbdeeesdst"; 102 var_dump(preg_match_all($pattern,$str,$arr)); 103 var_dump( $arr); 104 ?> 105 106 <?php 107 $pattern='/t.*?st/'; //懒惰匹配,尽可能短地匹配满足规则的字符串 108 $str="nutasttbdeeesdst"; 109 var_dump(preg_match_all($pattern,$str,$arr)); 110 var_dump( $arr); 111 ?> 112 113 <?php 114 $pattern='/^tst/'; // ^或\A匹配首字符开始位置 115 $str="tsttbdeeesdst"; 116 var_dump(preg_match_all($pattern,$str,$arr)); 117 var_dump( $arr); 118 ?> 119 120 <?php 121 $pattern='/test$/'; // $匹配字符串结束的位置 122 $str="tsttbdeeesdtest"; 123 var_dump(preg_match_all($pattern,$str,$arr)); 124 var_dump( $arr); 125 ?> 126 127 <?php 128 $pattern='/^te.*st$/'; // ^与$匹配指定字符串 129 $str="te12st"; 130 var_dump(preg_match_all($pattern,$str,$arr)); 131 var_dump( $arr); 132 ?> 133 134 <?php 135 $pattern='/te.*st|abc/'; // |多个特征 136 $str="te00stsdabc"; 137 var_dump(preg_match_all($pattern,$str,$arr)); 138 var_dump( $arr); 139 ?> 140 141 <?php 142 $pattern='/t[abc]st/'; // []中的任意一个字符 143 $str="tcstsdabc"; 144 var_dump(preg_match_all($pattern,$str,$arr)); 145 var_dump( $arr); 146 ?> 147 148 <?php 149 $pattern='/t[^abc]st/'; // 除[]中以外的任意一个字符 150 $str="tbsttmstsdabc"; 151 var_dump(preg_match_all($pattern,$str,$arr)); 152 var_dump( $arr); 153 ?>
查看执行结果:view-source:http://www.junglexj.com/file/demo01.php