特殊字符--元字符

以下说明了常见元字符的应用。

代码及执行结果:

  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='/tdst/';  //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='/tDst/';  //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='/tsst/';  //s可以匹配一个空白字符,如换行符
,回车符
,制表符	,垂直制表符
 24 $str='abcdaft@stbsdfeat st';
 25 var_dump(preg_match_all($pattern,$str,$arr));
 26 var_dump( $arr);
 27   ?>
 28 
 29 <?php 
 30 $pattern='/tsst/';  //s可以匹配一个空白字符
 31 $str="abcdaft
stbsdfeatst";//换行符外用双引号
 32 var_dump(preg_match_all($pattern,$str,$arr));
 33 var_dump( $arr);
 34   ?>
 35 
 36 <?php 
 37 $pattern='/twst/';  //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
stbsdfeat_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


参考:http://www.sifangku.com/php1/91.html 

原文地址:https://www.cnblogs.com/junglexj/p/6018784.html