• php正则讲解 及与 js的正则比较


      正则:用于检索字符串的规则;

      js正则:

      var reg=/规则/

      reg是一个对象,在浏览器下;

      所以研究他的属性和方法

      属性:

      global是修饰符,代表全局检索   g

      ignorecase  忽略大小写的检索  i

      multiline  代表多行匹配  m

      lastindex  代表检索的起始位置  注意:这个需要结合全局匹配 g

      source  资源  代表正则表达式中字段的内容;

      方法:

      匹配的方法  test()

      捕获的方法  exec()

      每次捕获,就只捕获第一个,就不捕获了,这就是正则的懒惰行;

      如何解决正则的懒惰性?

        让其进行全局捕获;

      正则的规则写法;

        [abs]  代表方括号中任意一个字符;

        (red|blue|green)  对一个整体分组

        [^abs]  代表除了方括号中任意一个字符

        [0-9]  0-9之间的任意一个数字;

      元字符:

        .  代表任意一个字符;

        .  就是普通的.

        w  单词字符

        d  数字字符

        s  空白字符

          单词边界

      量词:

        n+  至少一个;

        n*  0到多个;

        n?  0到1个;

        n(x)  包含x个;

        n(x,)  至少x个;

        n(x,y)  大于等于x个,小于等于y个;

        n$  包含以n的结尾

        ^n  包含以n的开头;

        a(?=n)  指定字符串a后面紧跟着n的字符串,返回a

      针对量词:正则的贪婪性;

        正则的贪婪性:每次捕获,尽可能多的捕获;

        解决正则的贪婪性:在量词的后面加?

      正则中?的作用:

        1.放在普通的元字符后面,代表0到1个;

        2.放在量词的后面,代表取消正则的贪婪性;

      正则中()的作用;

        1.改变优先级;

        2.分组捕获

        3.分组引用;

      案例:

        var reg=/(a)(b)/

        分组捕获:首先正则是一个整体,捕获ab,捕获到在将ab分成两个小的分组,捕获不到就是 (注意字符串中没有ab的大正则即为捕获不到)    null

      如何取消分组捕获;

        在分组中的前面加上?: 就可以了

      php正则:

      1.php中的正则的定界符 //  代表起始和结束;

      2.//里面的内容就是规则;

        定界符的种类有很多,可以使用 ##  !!  ||  {}  //

      php提供的方法

        preg_match_all(参数一,参数二,参数三)  执行一个全局正则表达式的匹配

        参数一:检索的模式,我们写的正则;

        参数二:被检索的字符中;

        参数三:是一个多维数组,就是匹配的结果

      案例:

        $rg="/a/";

        $st="ab";

        var_dump(preg_match_all($rg,$st,$arr))  //返回匹配到的个数

        var_dump($arr);

      preg_match_all()  返回值int  是匹配的个数,

      $arr  是二维数组  存匹配的结果;

      正则中也分普通字符,和元字符;

        普通字符:a  s  12  _

        元字符:在正则中代表特殊意义的字符;

        d  数字

        [0-9]  0-9中任意一个数字;

        .  任意一个字符;

        .  就是代表.

        w  单词字符

        d  代表数字

        s  空白字符

          单词边界

      量词:

        *  0到多个

        +  至少一个;

        ?  0或1个;

        {n}  刚好n个;  与js量词的写法有区别

        {n,}  至少n个

        {n,m}  n到m个;

        ^n  以n的开头

        n$  以n的结尾

        |  代表或的意思 as|ad  as或ad

        [asc]  方括号中任意一个

        [^asc]  除了方括号中的任意一个;

        ()  一个整体,改变优先级,分组引用;

        模式修饰符:

          i:忽略大小写  m:多行匹配

          s:对特殊字符也能匹配;

          正则中的有些符号,是匹配不了的,如果加 s 这个修饰符,这些符号也可以匹配;

          案例:

            $re="/a.b/s";

            $st="a b";

        换行符  window下  

             linux下  

      php正则的贪婪性:

        $rg="/.*/";

        php中正则的贪婪性, 只有.*体现他的贪婪性  解除贪婪性  后面加?

      php中的小括号:

        1.成为一个整体

        2.分组引用;

      php中的分组引用  \1  \2  与js的区别 1  2;

      php正则提供的方法:

      preg_match_all()  执行一个全局正则,表达式匹配;

      preg_match()  执行一个正则,表达式匹配; 返回值int类型 0和1 匹配上了,就不往下匹配了;

      参数和preg_match_all()中的一致

      preg_replace()  执行一个正则表达式,搜索和替换;

      参数一:正则表达式;

      参数二:用于替换的字符串;

      参数三:用于检索目标字符串;  

      返回的结果:替换后的字符串;  

  • 相关阅读:
    ASP.NET Cookies简单应用 记住用户名和密码
    index.dat文件剖析
    簇集索引与聚集索引
    C#开发飞信机器人
    详解Javascript中的Url编码/解码
    基于关系型数据库的WEB OA公文流转系统
    今天Apple陆家嘴点“开战”
    准备在cnblogs活动上的演讲
    4年技术经验
    chinajoy之行
  • 原文地址:https://www.cnblogs.com/shangjun6/p/10758265.html
Copyright © 2020-2023  润新知