• 正则表达式


    什么是正则表达式?

      正则表达式是一组由字母和符号组成的特殊文本,可以从一个基础字符串中根据一定的匹配模式替换文本中的字符串、验证表单、提取字符串等。

        此正则表达式,可以匹配到 "2222-8_3" 但是匹配不到 "99*"

    • 基本匹配

        正则表达式是执行搜索时的格式,它由一些字母和数字组合而成。如正则表达式“123”匹配字符串“123”,它逐个字符与输入的正则正则表达式做比较。正则表达式对大小写敏感,所以“The”不会匹配“the”;

    • 元字符

      元字符不代表本身的字面意思,有其特殊含义。以下是元字符的介绍

    元字符 元字符名称 描述 
     . 点运算符

     匹配任意单个字符,不匹配换行符。

    比如 .ar  匹配任意一个字符后面跟着是ar的字符串。

     [] 字符集

    方括号指定一个字符集,在方括号中使用连字符来指定字符集的范围。

    比如表达式 [Tt]he 匹配the 和 The。ar[.] 匹配 ar.

     [^] 否定字符集

     ^表示一个字符串的开头,但它在方括号的开头的时候,表示这个字符集是否定的。

    比如[^c]ar 匹配一个后面跟着ar的除了c的任意字符,aaar是满足的,car是不满足的。

     * 重复次数  *

     在*之前的字符出现次数>=0。

    比如,表达式 a*匹配0或多个以a开头的字符,along 是满足条件的。表达式[a-z]* 匹配一个行中所有以小写字母开头的字符串。

    .* 可以匹配所有字符。

     + 重复次数 +

     在+之前的字符出现次数>=1。

    比如 c.+t 匹配以c开头t结尾中间跟着至少一个字符的字符串。

    重复次数 ?

    在?符号前面的字符为出现0次或1次。

    比如 [T]?he  可以匹配字符串 he 和 The。

    {n,m} 量词

    用例限定一个或一组字符可以重复出现的次数。

    比如 [0-9]{2,3} 匹配最少2位最多3位0-9的数字;[0-9]{2,} 匹配最少2位数字;[0-9]{,9} 匹配最多3位数字; [0-9]{3} 匹配3位数字。

    (xyz) (...)特征标群

    一组写在(...)中的子模式,(...)中包含的内容会被看成一个整体。

    比如表达式(ab)* 匹配连续出现0或多个ab,而ab* 则匹配连续出现0或多个b;

    | 或运算符

    判断条件或。

    比如(T|t)he|car 匹配 thear 或 Thear 或 thcar 或 Thcar

    转码特殊字符 反斜线在表达式中用于转码紧跟其后的字符。用于指定 { } [ ] / + * . $ ^ | ?这些特殊字符。
    ^ 锚点 :开头

    ^用来检查匹配字符串是否在所匹配字符串的开头。

    比如 ^a 可以匹配abc但不能匹配 bcd;^(T|t)he 匹配以 The 或 the 开头的字符串。

     $ 锚点:结尾

    $用来检查匹配字符串是否是最后一个。

    比如(at.)$ 匹配以 at. 结尾的字符串

    • 简写字符集
    简写 描述
    . 除换行符以外的所有字符
    w 匹配所有的字符数字,相当于 [a-zA-Z0-9]
    W 匹配所有非字母数字,即符号,相等于[^w]
    d 匹配数字,相当于[0-9]
    D 匹配非数字,相当于[^d]
    s 匹配所有的空格字符,相当于[ f p{Z}]
    S 匹配所有非空格字符,相当于[^s]
    f 匹配一个换页符
    匹配一个换行符
    匹配一个回车符
    匹配一个制表符
    v 匹配一个垂直制表符
    p 匹配CR/LF,相当于 ,用来匹配DOS行终止符。
    • 零宽度断言

         此章节未看懂,后面再另起章节来阐述这个。

    • 标志

      标志也叫模式修正符,因为它可以修改表达式的搜索结果。

     标志 描述 
     i

    忽略大小写 

    比如:/The/gi 表示在全局搜索 The,且忽略大小写。

     g

    全局搜索 

    比如:表达式/.(at)/g 表示搜索任意字符(除换行符) + at,并返回全部结果。

     m

    多行修饰符:锚点元字符^$工作范围在每行的起始 。

    比如:/at(.)?$/m  标识每行匹配表达式 at(.)?$ 

    • 贪婪匹配与惰性匹配

       正则表达式默认采用贪婪匹配模式,会匹配尽可能长的子串,使用?将贪婪匹配转为惰性匹配。如/(.*at)/ 和 /(.*?at)/

    参考:https://mp.weixin.qq.com/s/8hNSOF9He8uAEupRucyo-w

  • 相关阅读:
    jsp简单自定义标签demo展示《二》
    jsp自定义标签介绍《一》
    登陆filter
    中文乱码原因以及解决方案
    C++ 中注意,零扩展和符号位扩展
    linux下的a.out文件
    今天谈谈流,什么是IO流?
    windows下的c语言和linux 下的c语言以及C标准库和系统API
    一维数组的数组指针
    结构体指针传参与返回值
  • 原文地址:https://www.cnblogs.com/smallzhen/p/14070481.html
Copyright © 2020-2023  润新知