• PHP正则表达式30分钟入门教程


    正则表达式30分钟入门教程


    三个常用的知识点:

    1、惰性匹配:正则引擎默认是贪婪的,若要最少重复的话,需要用到惰性匹配符 “?

    懒惰限定符

    代码/语法

    说明

    *? 重复任意次,但尽可能少重复
    +? 重复1次或更多次,但尽可能少重复
    ?? 重复0次或1次,但尽可能少重复
    {n,m}? 重复n到m次,但尽可能少重复
    {n,}? 重复n次以上,但尽可能少重复

    参考:http://deerchao.net/tutorials/regex/regex.htm#greedyandlazy

    2、不捕获性匹配: 一方面不占用反向应用组号,另一方面提高了匹配效率

    (?:exp)        // 匹配exp,不捕获匹配的文本,也不给此分组分配组号

    参考:http://deerchao.net/tutorials/regex/regex.htm#backreference

    3、PHP正则表达式模式修饰符详解

    模式修正符号功能描述
    i 忽略大小写在和正则匹配是不区分大小写
    m

    多行模式

    说法1:启用的话,^和$将匹配行的开始于结束;不启用的话,^和$将匹配整个字符串的开始于结束;

    说法2:将字符串视为多行。默认的正则开始“^”和结束“$”将目标字条串作为一单一的一“行”字符(甚至其中包括换行符也是如此)。如果在修饰符中加上“m”,那么开始和结束将会指点字符串的每一行的开头就是“^”结束就是“$”。

    s

    单行模式

    说法1:句点(.)可以匹配任意字符,包括换行符( );

    说法2:如果设定了这个修正符,那么,被匹配的字符串将视为一行来看,包括换行符,换行符将被视为普通字符串。

    x

    忽略空白

    说法1:启用的话,将会忽略正则表达式中的空白字符(空格,换行等),并且会忽略(#注释)格式的内联注释。在次模式下,任然可以使用s等元字符来匹配空白字符。

    说法2:忽略空白,除非进行转义的不被忽略。

    e

    只用在preg_replace()函数中,在替换字符串中逆向引用做正常的替换,将其(即“替换字符串”)作为PHP代码求值,并用其结果来替换所搜索的字符串。

    注意:这个参数不推荐使用了,相关文章如下:

    PHP函数preg_replace() 正则替换所有符合条件的字符串

    用preg_replace_callback 代替 preg_replace

    A 如果使用这个修饰符,那么表达式必须是匹配的字符串中的开头部分。比如说”/a/A”匹配”abcd”。
    D 模式中的$字符权匹配目标字符的结尾。没有此选项时,如果最后一个字符是换行符的话,美元符号也会匹配此字符之前。如果设定了修正符m则忽略此项。
    E 与”m”相反,如果使用这个修饰符,那么”$”将匹配绝对字符串的结尾,而不是换行符前面,默认就打开了这个模式。
    U 贪婪模式,和问号的作用差不多,最大限度的匹配就是贪婪模式。
     

    常用的元字符
    代码说明
    . 匹配除换行符( , , )以外的任意字符
    w 匹配字母或数字或下划线或汉字
    s 匹配任意的空白符,包括空格制表符(Tab)、换行符中文全角空格
    d 匹配数字
     匹配单词的开始或结束
    ^ 匹配字符串的开始
    $ 匹配字符串的结束
     
  • 相关阅读:
    又是一个递归的题
    全文检索引擎记录
    处理“System.Web.HttpException: 超过了最大请求长度”
    完整国内城市js级联选择
    多服务器共享session的解决方案之一
    递归求n的阶乘
    面试遇到了 <计算从1到N中1的出现次数>结果悲剧了.
    DropDownList绑定Xml数据的实现
    简单图片上传示例
    C#默认访问修饰符
  • 原文地址:https://www.cnblogs.com/52php/p/5666535.html
Copyright © 2020-2023  润新知