zoukankan      html  css  js  c++  java
  • 11.1、了解正则表达式

    一、第一个正则表达式
         
     PHP Code By http://t.qq.com/tony-src
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?php 
        
        /**
         * 第一个正则表达式
         * 模式规则:  /内容/
         * 参数 1 :模式,匹配规则
         * 参数 2:字符串
         * 
         * 匹配规则:按照模式匹配,只要模式全部通过,那么就通过
         */

        $mode = 
    '/PHP/';     // 规则模式
        $string = 'PHP';     // 字符串
        echo preg_match($mode, $string);
            
    ?>
     
    二、正则表达式中的元素
        三种元素:(量词、元字符、修饰符)
      1. 量词

          
         PHP Code By http://t.qq.com/tony-src
        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        17
        18
        19
        20
        21
        22
        23
        24
        25
        26
        27
        28
        29
        30
        31
        32
        33
        34
        35
        36
        37
        38
        39
        40
        41
        42
        43
        44
        45
        46
        47
        48
        49
        50
        51
        52
        53
        54
        55
        56
        57
        58
        59
        60
        61
        62
        63
        64
        65
        66
        67
        68
        69
        70
        71
        72
        73
        74
        75
        76
        77
        78
        79
        80
        81
        82
        83
        84
        85
        86
        87
        88
        89
        90
        91
        92
        93
        94
        95
        96
        97
        98
        99
        100
        101
        102
        103
        104
        105
        106
        107
        108
        109
        110
        111
        112
        113
        114
        115
        116
        117
        118
        119
        120
        121
        122
        123
        124
        125
        <?php 
            
            /**
             * + 匹配任何至少包含一个前导字符串
             */

            $mode = 
        '/PH+P/';
            
        echo preg_match($mode, 'PHP');                      // 匹配
            echo preg_match($mode, 'PP');                       // 不匹配
            echo preg_match($mode, 'PHHHHP');                   // 匹配
            
            
        echo '<br />';
            
            
        /**
             * * 匹配任何包含零个或多个前导字符串
             * *号虽然可以是零个,但前导字符不能更改,更改就不匹配了
             */

            $mode = 
        '/PH*P/';
            
        echo preg_match($mode, 'PP');                       // 匹配
            echo preg_match($mode, 'POP');                      // 不匹配
            echo preg_match($mode, 'PHHHHP');                   // 匹配
            
            
        echo '<br />';
            
            
        /**
             * ? 匹配任何包含零个或一个前导字符串
             */

            $mode = 
        '/PH?P/';
            
        echo preg_match($mode, 'PP');                       // 匹配
            echo preg_match($mode, 'PHP');                      // 匹配
            echo preg_match($mode, 'PHHHHP');                   // 不匹配
            
            
        echo '<br />';
            
            
        /**
             * . 匹配任意一个字符
             */

            $mode = 
        '/P.P/';
            
        echo preg_match($mode, 'PP');                       // 不匹配
            echo preg_match($mode, 'PHP');                      // 匹配
            echo preg_match($mode, 'PHHHHP');                   // 不匹配
            
            
        echo '<br />';
            
            
        /**
             * .* 匹配任意字符,并且零个或多个
             */

            $mode = 
        '/P.*P/';
            
        echo preg_match($mode, 'PP');                       // 匹配
            echo preg_match($mode, 'PHP');                      // 匹配
            echo preg_match($mode, 'PHHdfsdsfsHHP');            // 匹配
            
            
        echo '<br />';
            
            
        /**
             * {x} 匹配任何包含x个前导字符串
             */

            $mode = 
        '/Ph{3}P/';
            
        echo preg_match($mode, 'PhhhP');                    // 匹配
            echo preg_match($mode, 'PHP');                      // 不匹配
            echo preg_match($mode, 'PP');                       // 不匹配
            
            
        echo '<br />';
            
            
        /**
             * {x,y} 匹配任何包含x到y个前导字符串
             */

            $mode = 
        '/Ph{3,5}P/';
            
        echo preg_match($mode, 'PhhhP');                    // 匹配
            echo preg_match($mode, 'PhhhhP');                   // 匹配
            echo preg_match($mode, 'PhhhhhP');                  // 匹配
            echo preg_match($mode, 'PhP');                      // 不匹配
            echo preg_match($mode, 'PhhhhhhP');                 // 不匹配
            echo preg_match($mode, 'PP');                       // 不匹配
            
            
        echo '<br />';
            
            
        /**
             * {x,} 匹配任何包含至少x个前导字符串
             */

            $mode = 
        '/Ph{3,}P/';
            
        echo preg_match($mode, 'PhhP');                     // 不匹配
            echo preg_match($mode, 'PhhhhP');                   // 匹配
            
            
        echo '<br />';
            
            
        /**
             * $ 匹配任何包含至少x个前导字符串
             */

            $mode = 
        '/PhP$/';
            
        echo preg_match($mode, 'PhhP');                     // 不匹配
            echo preg_match($mode, 'Ph');                       // 不匹配
            echo preg_match($mode, 'PhP');                      // 匹配
                
            
        echo '<br />';
            
            
        /**
             * ^ 匹配字符串的行首
             */

            $mode = 
        '/^PhP/';
            
        echo preg_match($mode, 'PhhP');                     // 不匹配
            echo preg_match($mode, 'Ph');                       // 不匹配
            echo preg_match($mode, 'PhPHP');                    // 匹配
            echo preg_match($mode, '2PhP');                     // 匹配
            
            
        echo '<br />';
            
            
        /**
             * | 匹配字符串的左边或者右边
             */

            $mode = 
        '/php|asp|jsp/';
            
        echo preg_match($mode, 'php');                      // 匹配
            echo preg_match($mode, 'asp');                      // 匹配
            echo preg_match($mode, 'php');                      // 匹配
            echo preg_match($mode, 'java');                     // 匹配
            
            
        echo '<br />';
            
            
        /**
             * () 包围一个字符分组或定义个反引用,可以使用\1\2提取
             */

            $mode = 
        '/(This) (is) (a) (engineer)\1/';
            
        echo preg_match($mode, 'This is a engineer');       // 不匹配
            echo preg_match($mode, 'This is a engineerThis');   // 匹配
            
        ?>
      2. 元字符

         
         PHP Code By http://t.qq.com/tony-src
        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        17
        18
        19
        20
        21
        22
        23
        24
        25
        26
        27
        28
        29
        30
        31
        32
        33
        34
        35
        36
        37
        38
        39
        40
        41
        42
        43
        44
        45
        46
        47
        48
        49
        50
        51
        52
        53
        54
        55
        56
        57
        58
        59
        60
        61
        62
        63
        64
        65
        66
        67
        68
        69
        70
        71
        72
        73
        74
        75
        76
        77
        78
        79
        80
        81
        82
        83
        84
        85
        86
        87
        88
        89
        90
        91
        92
        93
        94
        95
        96
        97
        98
        99
        100
        101
        102
        103
        104
        105
        106
        107
        108
        109
        110
        111
        112
        113
        114
        115
        116
        117
        118
        119
        120
        121
        122
        123
        124
        125
        126
        127
        128
        129
        130
        131
        132
        133
        134
        135
        136
        137
        138
        139
        140
        141
        142
        143
        144
        145
        146
        147
        148
        149
        150
        151
        152
        153
        154
        155
        156
        157
        158
        <?php 
            
            /**
             * [a-z] 匹配任何包含小写字母 a-z 的字符串
             */

            $mode = 
        '/a[a-z]php/';
            
        echo preg_match($mode, 'aphp');                     // 不匹配
            echo preg_match($mode, 'abphp');                    // 匹配
            echo preg_match($mode, 'php');                      // 不匹配
            
            
        echo '<br />';
            
            
        /**
             * [A-Z] 匹配任何包含大写字母A-Z 的字符串
             */

            $mode = 
        '/a[A-Z]php/';
            
        echo preg_match($mode, 'aphp');                     // 不匹配
            echo preg_match($mode, 'aBphp');                    // 匹配
            echo preg_match($mode, 'php');                      // 不匹配
            
            
        echo '<br />';
            
            
        /**
             * [0-9] 匹配任何包含 0-9 的字符串
             */

            $mode = 
        '/a[0-9]php/';
            
        echo preg_match($mode, 'aphp');                     // 不匹配
            echo preg_match($mode, 'a10php');                   // 不匹配
            echo preg_match($mode, 'a8php');                    // 匹配
            echo preg_match($mode, 'php');                      // 不匹配
            
            
        echo '<br />';
            
            
        /**
             * [abc] 匹配任何包含小写字母  a、b、c 的字符串
             */

            $mode = 
        '/a[abc]php/';
            
        echo preg_match($mode, 'aphp');                     // 不匹配
            echo preg_match($mode, 'aaphp');                    // 匹配
            echo preg_match($mode, 'akphp');                    // 不匹配
            echo preg_match($mode, 'php');                      // 不匹配
            
            
        echo '<br />';
            
            
        /**
             * [^abc] 匹配任何不包含小写字母  a、b、c 的字符串
             */

            $mode = 
        '/a[^abc]php/';
            
        echo preg_match($mode, 'aphp');                     // 不匹配
            echo preg_match($mode, 'aaphp');                    // 不匹配
            echo preg_match($mode, 'akphp');                    // 匹配
            echo preg_match($mode, 'php');                      // 不匹配
            
            
        echo '<br />';
            
            
        /**
             * [a-zA-Z0-9_] 匹配任何包含 a-zA-Z0-9 和下划线 的字符串
             */

            $mode = 
        '/a[a-zA-Z0-9_]php/';
            
        echo preg_match($mode, 'aphp');                     // 不匹配
            echo preg_match($mode, 'a8php');                    // 匹配
            echo preg_match($mode, 'a_php');                    // 匹配
            echo preg_match($mode, 'php');                      // 不匹配
            
            
        echo '<br />';
            
            
        /**
             * [\w] 匹配任何包含 a-zA-Z0-9 和下划线 的字符串
             */

            $mode = 
        '/a[\w]php/';
            
        echo preg_match($mode, 'aphp');                     // 不匹配
            echo preg_match($mode, 'a8php');                    // 匹配
            echo preg_match($mode, 'a_php');                    // 匹配
            echo preg_match($mode, 'php');                      // 不匹配
            
            
        echo '<br />';
            
            
        /**
             * [\W] 匹配任何没有下划线和字母数字的字符串
             */

            $mode = 
        '/a[\W]php/';
            
        echo preg_match($mode, 'aphp');                     // 不匹配
            echo preg_match($mode, 'a8php');                    // 不匹配
            echo preg_match($mode, 'a$php');                    // 匹配
            echo preg_match($mode, 'php');                      // 不匹配
            
            
        echo '<br />';
            
            
        /**
             * [\d] 匹配任何数字字符,和[0-9]相同
             */

            $mode = 
        '/a[\d]php/';
            
        echo preg_match($mode, 'aphp');                     // 不匹配
            echo preg_match($mode, 'a8php');                    // 匹配
            echo preg_match($mode, 'a$php');                    // 不匹配
            echo preg_match($mode, 'php');                      // 不匹配
            
            
        echo '<br />';
            
            
        /**
             * [\D] 匹配任何非数字字符,和[^0-9]相同
             */

            $mode = 
        '/a[\D]php/';
            
        echo preg_match($mode, 'aphp');                     // 不匹配
            echo preg_match($mode, 'a8php');                    // 不匹配
            echo preg_match($mode, 'a$php');                    // 匹配
            echo preg_match($mode, 'php');                      // 不匹配
            
            
        echo '<br />';
            
            
        /**
             * [\s] 匹配任何空白字符
             */

            $mode = 
        '/a[\s]php/';
            
        echo preg_match($mode, 'aphp');                     // 不匹配
            echo preg_match($mode, 'a8php');                    // 不匹配
            echo preg_match($mode, 'a php');                    // 匹配
            echo preg_match($mode, 'php');                      // 不匹配
            
            
        echo '<br />';
            
            
        /**
             * [\S] 匹配任何非空白字符
             */

            $mode = 
        '/a[\S]php/';
            
        echo preg_match($mode, 'aphp');                     // 不匹配
            echo preg_match($mode, 'a8php');                    // 匹配
            echo preg_match($mode, 'a php');                    // 不匹配
            echo preg_match($mode, 'php');                      // 不匹配
            
            
        echo '<br />';
            
            
        /**
             * [\b] 匹配是否到达了单词边界
             */

            $mode = 
        '/php\b/';
            
        echo preg_match($mode, 'php is language');          // 匹配
            echo preg_match($mode, 'phpis language');           // 不匹配
            
            
        echo '<br />';
            
            
        /**
             * [\B] 匹配是否到达了单词边界
             */

            $mode = 
        '/php\B/';
            
        echo preg_match($mode, 'php is language');          // 不匹配
            echo preg_match($mode, 'phpis language');           // 匹配
            
            
        echo '<br />';
            
            
        /**
             * [\] 匹配正则中的特殊字符
             */

            $mode = 
        '/php\+/';
            
        echo preg_match($mode, 'php+ is language');         // 匹配
            echo preg_match($mode, 'phpis language');           // 不匹配
            
        ?>
      3. 修饰符

         
         PHP Code By http://t.qq.com/tony-src
        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        17
        18
        19
        20
        21
        22
        23
        24
        25
        26
        27
        28
        29
        30
        31
        32
        33
        34
        35
        36
        37
        38
        39
        40
        41
        42
        <?php 
            
            /**
             * i 完成不区分大小写的搜索
             */

            $mode = 
        '/php/i';
            
        echo preg_match($mode, 'php');                      // 匹配
            echo preg_match($mode, 'PHP');                      // 匹配
            
            
        echo '<br />';
            
            
        /**
             * m 在匹配首内容或者尾内容时候采用多行识别匹配
             */

            $mode = 
        '/php$/m';
            
        echo preg_match($mode, "This is php\n,is good");    // 匹配
            
            
        echo '<br />';
            
            
        /**
             * x 忽略正则中的空白
             */

            $mode = 
        '/p h p/x';
            
        echo preg_match($mode, 'php');                      // 匹配
            
            
        echo '<br />';
            
            
        /**
             * A 强制从头开始匹配
             */

            $mode = 
        '/php/A';
            
        echo preg_match($mode, 'aphpjava');                 // 不匹配
            echo preg_match($mode, 'phpjava');                  // 匹配
            
            
        echo '<br />';
            
            
        /**
             * U 禁止贪婪匹配,只跟踪到最近的一个匹配符并结束
             */

            $mode = 
        '/a.+b/U';
            
        ?>
     




  • 相关阅读:
    阿里早期Android加固代码的实现分析
    如何利用C++的time头文件获取系统时间
    Python编写基于socket的非阻塞多人聊天室程序(单线程&多线程)
    Dalvik模式下在Android so库文件.init段、.init_array段构造函数上下断点
    手动绕过百度加固Debug.isDebuggerConnected反调试的方法
    request使用代理
    requests爬取豆瓣热门电视剧
    scrapy-继承默认的user-agent 中间件
    scrapy-下载器中间件 随机切换user_agent
    scrapy 直接在编辑器运行
  • 原文地址:https://www.cnblogs.com/tonycody/p/2821849.html
Copyright © 2011-2022 走看看