zoukankan      html  css  js  c++  java
  • 正则表达式

    说明

      正则表达式是用于进行文本匹配的工具,有可能字符串里有不止一个部分满足给定的正则表达式,这时每一个这样的部分被称为一个匹配

    特殊代码

    表1.常用的特殊代码

    代码/语法

    说明

    .

    匹配除换行符以外的任意字符

    w

    匹配字母或数字

    s

    匹配任意的空白符

    d

    匹配数字

    

    匹配单词的开始或结束

    ^

    匹配字符串的开始

    $

    匹配字符串的结束

    字符转义:

    重复:

    表2.常用的量词

    代码/语法

    说明

    *

    重复零次或更多次

    +

    重复一次或更多次

    ?

    重复零次或一次

    {n}

    重复n次

    {n,}

    重复n次或更多次

    {n,m}

    重复n到m次

    反义

    表3.常用的反义代码

    代码/语法

    说明

    W

    匹配任意不是字母和数字的字符

    S

    匹配任意不是空白符的字符

    D

    匹配任意非数字的字符

    B

    匹配不是单词开头或结束的位置

    [^x]

    匹配除了x以外的任意字符

    [^aeiou]

    匹配除了aeiou这几个字母以外的任意字符

       注意:^在中括号”[]”中被使用的话就是表示字符类的否定,如果不是的话就是表示限定开头

       例如:^[a-z]表示的是以小写字母开始,[^a-z]表示匹配非小写字母

    Tips:在正则表达式中有单行和多行模式  

      多行模式:Multiline修饰的是^与$,就是说Multiline为false的时候,^只能匹配字符串开头,$只能匹配字符串结尾,Multiline为true的时候,^可以匹配字符串开头(字符串的开始位置),也可以匹配行的开头(即换行符 之后的位置),$可以匹配字符串结尾(字符串的结束位置), 也可以匹配行的结尾(即换行符 之前的位置),换句话说,匹配每一行

      单行模式:(开启则“ . ”号会匹配所有字符,不开启则匹配除了换行符之外的所有字符)Singleline修饰的是'.',就是说Singleline为true的时候匹配的是所有字符(包括 ),Singleline为false的时候,匹配的是除 外的所有字符。

      举个例子:(https://tool.lu/regex/ 在线工具)

      这是一段测试字符串

      1)正则表达式为.+

        1.单行模式

          

        2.多行模式

          

        3.单行模式+多行模式 <==> Multiline=true Singleline=true  因为正则表达式中没有^$所以默认是整个字符串匹配所以只会有一个匹配结果(和单行匹配结果一致)

        4.无模式 <==> Multiline=false Singleline=false 因为正则表达式中没有^$并且"."不能匹配 所以匹配三处"abab1 abca 123ac "(这个代表整个字符串)

       2)正则表达式为^.+$

         1.单行模式

          

           "abab1 abca 123ac "

         2.多行模式

          

           "abab1

           

           abca

           123ac "(这个代表按行匹配)

        3.单行模式+多行模式 <==> Multiline=trueSingleline=true  这就意味着'.'匹配换行,并且按行匹配

           "abab1

           

           abca

           123ac "(这个代表按行匹配)

          也许你会问这和上面有什么不同,那么我们把正则表达式换成[ab]{2}w+和^[ab]{2}w+$来试下单行模式+多行模式

          [ab]{2}w+

          其他几种情况结果都一样

          ^[ab]{2}$

       

          原因:[ab]{2}w+没有^$没有'.',无论是单行模式还是多行模式,结果都是整个字符串去匹配[ab]{2}w+,^[ab]{2}$由于没有'.',无所谓单行模式,此时如果不是多行模式,那么是整个字符串去匹配,如果是多行模式,那么是逐行去匹配

        4.无模式

          

       如果觉得弄清楚的话自己可以看看a.*a、^a.*a$与样例中的匹配情况

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  

    JS中没有单行模式!!!!!!!!!!!只有三种对象模式:g (全文查找出现的所有 pattern), i (忽略大小写), m (多行查找) 

  • 相关阅读:
    MySQL日志概述
    MySQL事务概述
    MySQL存储引擎
    Linux软件安装,RPM与YUM
    使用PuTTY在Windows中向Linux上传文件
    Linux网络基础
    Java正则表达式实例详解
    Javascript正则构造函数与正则表达字面量&&常用正则表达式
    常用sql语句及案例(oracle)
    oracle数据导入/导出(2)
  • 原文地址:https://www.cnblogs.com/cc-xiao5/p/8392932.html
Copyright © 2011-2022 走看看