• 正则表达式


    简介

    正则表达式(Regular Expression)是一种文本模式,包括普通字符(如字母、数字等)和特殊字符(称为"元字符",例如*.avi中的*)。

    正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串,从而起到搜索、替换所需要的文本或文件名的功能。



    以“\”开头的元字符

    以下元字符不以“\”开头,要匹配其原义,去掉“\”即可。

    空白字符

    以下除了空格,均为元字符:

    字符描述
    \n换行符
    \r回车符
    \f换页符
    \t水平制表符
    \v垂直制表符
    \d 和 \D

    前者匹配一个数字字符。等价于:

    [0-9]
    
    • 1

    后者与前者相反,匹配一个非数字字符。

    \s 和 \S

    前者匹配一个空白字符,等价于:

    [ \f\n\r\t\v]
    
    • 1

    后者与前者相反,匹配一个非空白字符。

    \w 和 \W

    前者匹配一个字母、数字或下划线,等价于

    [A-Za-z0-9_]
    
    • 1

    后者与前者相反。


    不以“\”开头的元字符

    以下元字符,要匹配其原义,需要使用“\”转义

    限定符

    以下六种元字符可指定匹配字符的次数。

    {n}

    n为非负整数,表示匹配括号前一个字符n次,例如匹配字符a三次:

    a{3}
    
    • 1
    {n,}

    n为非负整数,表示匹配括号前一个字符至少n次。

    {n,m}

    表示匹配括号前一个字符n到m次。

    *

    匹配其前面的单个字符零次或多次,例如以下表达式可匹配“acd”、“abcd”、“abbcd”、“abbbbcd”等。

    ab*cd
    
    • 1
    +

    匹配其前面的单个字符一次或多次。以下表达式可匹配“abcd”、“abbcd”、“abbbbcd”等。

    ab+cd
    
    • 1
    ?

    匹配其前面的单个字符零次或一次。以下表达式可匹配“acd”、“abcd”等。

    ab?cd
    
    • 1

    定位符

    ^

    该字符后面接字符串,表示匹配以该字符串开头的内容,例如:

    ^abc
    
    • 1

    则可以匹配到以“abc”开头的文本。

    若在方括号中使用“^”,其含义为“取反”,即对于配所有该方括号中出现的内容均不匹配,例如,匹配除元音字母外的所有字符:

    [^aeiou]
    
    • 1
    $

    该字符前面接字符串,表示匹配以该字符串结尾的内容,例如,匹配所有以“abc”结尾的字符串:

    abc$
    
    • 1

    该字符可与“^”连用,表示精确匹配,例如:

    ^123$
    
    • 1

    则只能匹配到内容为“123”的文本。

    其他符号

    []

    被方括号括住的内容为字符簇,用于匹配一个该方括号中出现的字符。例如,匹配所有元音字母:

    [aeiou]
    
    • 1

    可使用“-”表示一个范围内的字符都进行匹配。例如,匹配一个数字:

    [0-9]
    
    • 1

    注意顺序,0在前9在后,写反了就啥也匹配不到。

    “-”不是元字符,除了在方括号中的这种特殊用法,“-”与其他普通字符使用方法一致。

    .

    匹配除换行符(\n及\r)之外的单个字符。相当于:

    [^\n\r]
    
    • 1
    ()

    括号内的内容可作为子正则表达式,与其他正则表达式构成完整匹配规则。

    |

    表示选择,匹配“|”前面的字符串或后面的字符串,例如:

    N|CBA
    
    (N|C)BA
    
    • 1
    • 2
    • 3

    前者可匹配“N”和“CBA”,后者匹配“NBA”和“CBA”。



    元字符运算优先级

    元字符一般从左到右运算,优先级由高到底,如下表所示:

    元字符描述
    \转义符
    [], ()中括号和小括号
    *, +, ?, {n}, {n,}, {n,m}限定符
    ^, $, .等定位符和其他元字符
    |选择符号



    修饰符

    修饰符并不是正则表达式的一部分,这些字符一般跟在正则表达式后面,以起到一些额外的作用:

    修饰符部分以“/”作为开始,后面接修饰符:

    修饰符功能
    i不区分大小写
    g全局匹配
    m多行匹配
    s令元字符“.”也能匹配到“\n”



    参考资料

    正则表达式 - 教程

  • 相关阅读:
    使用内网穿透实现公网VNC远程桌面Ubuntu
    使用libevent实现基于event的tcp服务器
    为什么反射慢?
    netty系列之:channelHandlerContext详解
    JavaEE、Spring
    C++必学!——类与对象 万字总结!建议收藏!
    登录页(-- 郑郑日上项目【vue-element-admin】【PC 端】【后台管理系统】)
    ssm技术
    动动手指自己“造”芯片,Google 推出芯片设计网站
    重置手机网络虽然麻烦,但效果杠杠的!如何重置安卓手机的网络
  • 原文地址:https://blog.csdn.net/Zerg_Wang/article/details/127704677