美文网首页
正则表达式--初识

正则表达式--初识

作者: 习惯水文的前端苏 | 来源:发表于2022-07-30 14:33 被阅读0次

    \bullet 前言

        虽然工作四五年了,都没怎么使用过正则,但是它一直都是我心中的一个痛,尤其是我月初手写webpack-loader完成项目需求时,使用了大量的字符串的find、replace等操作,这让我再一次存在这样的疑问:如果是正则,会不会更好?

    \bullet 元字符

        ^、$、.、*、+、?、|、\、/、(、)、[、]、{、}、=、!、:、-

    \bullet 横向匹配与纵向匹配

        \ast 横向匹配

            一般字符值是确定的,但是该字符出现的个数不确定,比如ab、abb、abbb、abbb...b中,b出现的次数不确定

            代表字符:

                {}:具体指定出现次数

                ?:0|1次

                +:>=1次

                *:>=0次

        \ast 纵向匹配

            一般针对某一个字符做限定,如ab、ac、ad、af中,b的值不确定

            代表字符:

                .:通配符,表任意字符

                -:范围

                []:具体指定可选值

                ^:排除(仅用在[]时)

                \d:数字

                \w:数字|字母|下划线

                \s:空白符,如空格、水平制表符、垂直制表符、换行符、回车符、换页符等

                \D|\W|\S:上述小写取反

    \bullet 贪婪与惰性

        贪婪

            按最大范围匹配

        惰性

            按最小范围匹配,使用?标识

    \bullet 分支

        标识符

            |

            一般与()搭配使用

    \bullet 修饰符

        g:后一次匹配从上一次匹配成功的下一个位置开始

        m:多行匹配

        i:忽略大小写

    \bullet 优先级

        \\rightarrow  ()或[] \rightarrow  {}或*或?或+ \rightarrow  ^或$或字符字面量 \rightarrow  |

    \bullet 示例

        \ast 取任意字符

            [^]

        \ast 取除了abc外的

            [-ac]

        \ast 匹配十六进制颜色值

            分析:

                十六进制以“#”开头,但是并不能使用^,因为这代表整个字符的开头

                除了#外,其余字符为数字和字母,但是下划线不行,故为[\da-fA-F],且需要使用()与#隔开

                颜色值可以是3位也可以是6位,故需要使用分支:|     

            结果:

        \ast 配送时间--24小时制

            分析:

                若时的十位为2时,时的个位只能为0、1、2、3

                分的十位最高取到6

                涉及两种情况,需要使用|+()

            结果:

        \ast 匹配日期

            分析:

                和时间一样,主要分析出分支

                [0-38]代表的是0、1、2、3和8,而不是0到38

            结果:

        \ast 匹配文件路径

            分析:

                盘符可以是任意的大小写字母,对于冒号而言,我不确定需不需要转译,那就转译准没错

                剩下的文件夹,分两种情况:

                    如果是最后一个,则没有\,且要么有要么没有

                    如果不是最后一个,则一定有\,且为0或多个

                    虽说是两种情况,但这里并不是分支的概念

            结果:

        \ast 匹配id

            分析:

                使用.可以匹配任意字符,为空的不要,故为.+

                但是.也会匹配引号,故想要进行贪婪,匹配到右引号即停止

                ?是对匹配结果进行贪婪,而非前一个,如.+?“标识对任意字符匹配到问号为止,而不是对+

             结果:


    参考

    相关文章

      网友评论

          本文标题:正则表达式--初识

          本文链接:https://www.haomeiwen.com/subject/frxairtx.html