正则帖子

来源:互联网 发布:cad软件锁许可管理器 编辑:程序博客网 时间:2024/06/07 02:47

/****
燕十八 公益PHP讲堂

论 坛: http://www.zixue.it
微 博: http://weibo.com/Yshiba
YY频道: 88354001
****/

 * preg_replace  正则表达式替换
 * preg_match()  比配函数
 * 
 * \d     0123456789   [0-9]
 *        abcdef……xyz  [a-z]
 *     ABCDE……XYZ   [A-Z]
 * 
 * ^ 相当于不是
 * 
 *  " 些时 \\1 相当于  h1|h2  "    $preg = '/<(h1|h2)><(.*?)><(\\1)>/is';
 *  单引号时 \\1 要改为 \1
 * 
 * $str = "abcdefABC345";
 * echo preg_match("/[a-z]/",$str,$arr)?"找到":"没找到";
 * var_dump($arr);
 * 
 * 原子:
 * 1.包含所有打印(可以在屏幕上输出的字符)和非打印字符(看不到的,回车、空格)。
 * 2.* . + ? ( ) < > 如果所有有意义的字符,想作为原子使用,统统使用“\”转义符转义。
 * 3.转义字符可以将有意的字符转成没有意义的字符,还可以将没意义的字符转义为有意义的字符。
 * 4.在正则表达式中可以直接使用一些代表范围的原子。如下:
 *   \d :表示任意一个十进制的数字
 *   \D :表示任意一个非数字的字符
 *   \s :表示任意一个空白的字符 (空格、回车 \n \r \t)
 *   \S :表示任意一个非空白的字符
 *   \w :表示任意一个字(a-z 0-9 A-Z _ )
 *   \W :表示任意一个非字
 *    . :表示除换行符任意一个字符
 * 5.自定义原子表
 *  [] :可以匹配方括号中的任何一个原子
 *  [-] : 可以匹配方括号中的一个范围
 * [^] : 表示取反 例 :[^1-6] 除了1到6 所有原子
 * 
 * 
 * 
 * 元字符:修饰原子的,不能单独出现。
 *   * :表示其前面的原子可以出现n(n>=0)次;
 *   + :表示其前面的原子可以现n(n>0)次;
 *   ? : 表示其前面的原子可以出现0次或1次;
 *   |:表示或者的关系,优先级是最低的;
 *   ^ :表示取反,如在正则表达式的第一个字符出现,表示必须以^后面的字符出现。
 *   $ : 表示必须以$前面的字符串结尾。
 *    但:/^qwe$/  只匹配字符串为:qwe
 *     /^qwe.*$/ 匹配以qwe开头以qwe结尾
 *   
 *   {}:用于自己定义前面原子出现的次数;
 *    例:
 *     /0{3}/ 判断0出现三次
 *     /0{3,9}/ 判断0出现3-9次
 *     /0{2,}/  判断0出现最少2次
 *  ():1.作为大原子使用;
 *     2.改变优先级;
 *     3.作为子模式使用;(全部匹配作为一个大模式,放入数组的第一个元素中,每个()是一个子模式,放入到数组的其它元素中)
 *    preg_match($pattern,$str,$arr);
 *     4.可以取消子模式,就将()作为大原子或改变优先级使用(在括号中最前面使用?:),就可以取消子模式;
 *     (?:)
 *     5.反向引用,可以在模式中直接将子模式取出,再做为正则表达式的一部分,  
 *           " 时 \\1 相当于  h1|h2  "    $preg = '/<(h1|h2)><(.*?)><(\\1)>/is';
 *    单引号时 \\1 要改为 \1
 *   \b :表示一个边界
 *   \B :表示一个非边界
 * 
 模式修式符号
 * 
 *  1.可以一次使用一个或多个;
 *  2、是对整个正则表达式调优使用的;
 * 
 * 
 * 
 *   i 表示在和模式匹配时可以不区分大小写;
 *   m 将多行字符串视为一行;
 *   s 将字符串视为单行;
 *   x 表示模式中的空白忽略不计;
 *   e 正则达式必须使用在preg_replace函数中时才可以使用;
 *   U 关闭贪婪模式   注意 : 表达式内 .*?  与修式符/U同时使用就会开启贪婪模式

原创粉丝点击