zoukankan      html  css  js  c++  java
  • PHP正则表达式考察点

    正则表达式的作用

    分隔、查找、匹配、替换字符串

    正则表达式的组成部分

    分隔符

    "/""#""~"

    通用原子

    • \d : 十进制的0-9
    • \D : 对\d取反:除了0-9
    • \w : 数字、字母、下画线
    • \W : 除了数字、字母、下画线
    • \s : 空格、换行符、换页符、回车符、字表符
    • \S : 除了空格、换行符、换页符、回车符、字表符

    常用原子符

    • . : 除了换行符之外的任意字符
    • * : 匹配前面内容出现0次、1次或多次
    • ? : 匹配前面内容出现0次或1次
    • ^ : 开头
    • dollar符 : 结尾
    • + : 匹配前面内容出现1次或多次
    • {n} : 出现n次
    • {n,} :出现大于等于n次
    • {n,m} : 出现大于等于n次 小于等于m次
    • [] : 集合,匹配中括号里面的[abc]则是匹配a 或 b 或 c
    • () : 后向引用或当作整体
    • [^] : 取反[^abc]除了a 、除了b、 除了c
    • | : 或者
    • [-] : 表示范围

    模式修正符

    • i : 不区分大小写
    • m : 多文本模式
    • s : 单行模式
    • U : 取消贪婪模式
    • x : 忽略模式中的空白符
    • A : 必须以该模式开头
    • D : 如果这个修饰符被设置, 模式中的元字符美元符号仅仅匹配目标字符串的末尾. 如果这个修饰符 没有设置, 当字符串以一个换行符结尾时, 美元符号还会匹配该换行符(但不会匹配之前的任何换行符). 如果设置了修饰符m, 这个修饰符被忽略
    • u : 进行utf-8匹配

    后向引用

    $str = '<b>abc</b>';
    $pattern = '/<b>(.*)<\/b>/';
    preg_replace($pattern,'\\1',$str);//这里\1代表的就是括号里匹配上的内容,也就是abc  
    

    贪婪模式

    $str = '<b>abc</b><b>bcd</b>';//匹配每一不b标签
    $pattern = '/<b>(.*?)<\/b>/';//.*存在贪婪模式,会一直匹配到最后,加上问号后 取消贪婪模式,匹配一个之后再进行下一个匹配  
    preg_replace($pattern,'\\1',$str);
    
    //使用以下方法也可以取消贪婪模式
    $pattern = '/<b>(.*)<\/b>/U';
    

    正则表达式PCRE函数

    • preg_filter — 执行一个正则表达式搜索和替换
    • preg_grep — 返回匹配模式的数组条目
    • preg_last_error — 返回最后一个PCRE正则执行产生的错误代码
    • preg_match_all — 执行一个全局正则表达式匹配
    • preg_match — 执行匹配正则表达式
    • preg_quote — 转义正则表达式字符
    • preg_replace_callback_array — Perform a regular expression search and replace using callbacks
    • preg_replace_callback — 执行一个正则表达式搜索并且使用一个回调进行替换
    • preg_replace — 执行一个正则表达式的搜索和替换
    • preg_split — 通过一个正则表达式分隔字符串

    例子

    写出一个正则表达式,取出页面中所有img标签中的src值

    $str = '<img alt="xxx" src="aaa.jpg" />';
    $pattern = '/<img.*?src=["\'].*?["\'].*?\/?>/';
    /**
     * 分析
     * img的标签特性:有<img开头,中间可能有其他属性:所以有<img.*?
     * src标签:src=["\'].*?["\']  可能是以单引号或双引号
     * 后面可能还有别的属性:.*?
     * 以/> 或 >结尾: /?>
     * 最终拼接成:<img.*?src=["\'].*?["\'].*?\/?>
     **/
    
    
  • 相关阅读:
    南桥-- 算法训练 2的次幂表示
    Ajax系列之中的一个:ajax旧貌换新颜
    ASP.NET综合管理ERP系统100%源代码+所有开发文档
    创业建议干货分享
    读取properties属性文件——国际化
    測试赛C
    Android 自己定义ViewGroup手把手教你实现ArcMenu
    【VBA研究】利用DateAdd函数取上月或上年同期的日期
    【Java集合源代码剖析】TreeMap源代码剖析
    openstack neutron L3 HA
  • 原文地址:https://www.cnblogs.com/clannadxr/p/7712026.html
Copyright © 2011-2022 走看看