• 正则表达式备忘录


    正则表达式入门

    在线正则表达式测试

     

    1.元字符

    代码   说明
    .   匹配除换行符以外的任意字符
    w   匹配字母或数字或下划线或汉字
    s   匹配任意的空白符
    d   匹配数字
       匹配单词的开始或结束
    ^   匹配字符串的开始
    $   匹配字符串的结束

    2.重复

    *       重复零次或更多次

    +      重复一次或更多次
    ?         重复零次或一次
    {n}      重复n次
    {n,}     重复n次或更多次
    {n,m}    重复n到m次

    3.反义

    代码/语法     说明
    W     匹配任意不是字母,数字,下划线,汉字的字符
    S      匹配任意不是空白符的字符
    D      匹配任意非数字的字符
    B       匹配不是单词开头或结束的位置
    [^x]     匹配除了x以外的任意字符
    [^aeiou]   匹配除了aeiou这几个字母以外的任意字符

    4.分类

    分类 代码/语法 说明
    捕获 (exp)      匹配exp,并捕获文本到自动命名的组里
    (?<name>exp)    匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp)
    (?:exp)        匹配exp,不捕获匹配的文本,也不给此分组分配组号
    零宽断言
    (?=exp)       匹配exp前面的位置
    (?<=exp)        匹配exp后面的位置
    (?!exp)        匹配后面跟的不是exp的位置
    (?<!exp)         匹配前面不是exp的位置
    注释 (?#comment) 这种类型的分组不对正则表达式的处理产生任何影响,用于提供注释让人阅读

    5.贪婪与懒惰

    代码/语法     说明
    *?      重复任意次,但尽可能少重复
    +?     重复1次或更多次,但尽可能少重复
    ??     重复0次或1次,但尽可能少重复
    {n,m}?    重复n到m次,但尽可能少重复
    {n,}?       重复n次以上,但尽可能少重复

    6.处理选项


    名称                       说明
    IgnoreCase(忽略大小写)          匹配时不区分大小写。
    Multiline(多行模式)              更改^和$的含义,使它们分别在任意一行的行首和行尾匹配,而不仅仅在整个字符串的开头和结尾匹配。(在此模式下,$的精确含意是:匹配 之前的位置以及字符串结束前的位置.)
    Singleline(单行模式)           更改.的含义,使它与每一个字符匹配(包括换行符 )。
    IgnorePatternWhitespace(忽略空白)     忽略表达式中的非转义空白并启用由#标记的注释。
    ExplicitCapture(显式捕获)          仅捕获已被显式命名的组

    7.注释

    注释
    小括号的另一种用途是通过语法(?#comment)来包含注释。
    例如:2[0-4]d(?#200-249)|25[0-5](?#250-255)|[01]?dd?(?#0-199)

    8.平衡组

    平衡组
    (?'group')          把捕获的内容命名为group,并压入堆栈(Stack)
    (?'-group')        从堆栈上弹出最后压入堆栈的名为group的捕获内容,如果堆栈本来为空,则本分组的匹配失败
    (?(group)yes|no)     如果堆栈上存在以名为group的捕获内容的话,继续匹配yes部分的表达式,否则继续匹配no部分
    (?!)           零宽负向先行断言,由于没有后缀表达式,试图匹配总是失败

    9.其他

    代码/语法             说明
    a             报警字符(打印它的效果是电脑嘀一声)
                 通常是单词分界位置,但如果在字符类里使用代表退格
                 制表符,Tab
                 回车
    v             竖向制表符
    f              换页符
                 换行符
    e             Escape
    nn            ASCII代码中八进制代码为nn的字符
    xnn            ASCII代码中十六进制代码为nn的字符
    unnnn         

    Unicode         代码中十六进制代码为nnnn的字符
    cN            ASCII控制字符。比如cC代表Ctrl+C
    A             字符串开头(类似^,但不受处理多行选项的影响)
                 字符串结尾或行尾(不受处理多行选项的影响)
    z             字符串结尾(类似$,但不受处理多行选项的影响)
    G            当前搜索的开头
    p{name}         Unicode中命名为name的字符类,例如p{IsGreek}
    (?>exp)          贪婪子表达式
    (?<x>-<y>exp)       平衡组
    (?im-nsx:exp)      在子表达式exp中改变处理选项
    (?im-nsx)          为表达式后面的部分改变处理选项
    (?(exp)yes|no)       把exp当作零宽正向先行断言,如果在这个位置能匹配,使用yes作为此组的表达式;否则使用no
    (?(exp)yes)         同上,只是使用空表达式作为no
    (?(name)yes|no)      如果命名为name的组捕获到了内容,使用yes作为表达式;否则使用no
    (?(name)yes)        同上,只是使用空表达式作为no

  • 相关阅读:
    快速了解MongoDB
    如何在 Ubuntu 上安装 MongoDB
    Python操作MongoDB文档数据库
    C# Convert.ToDouble 在不同的区域下的问题
    Visual Studio 调试C#程序时,提示“无法加载程序集****.XmlSerializers.dll",文件找不到 的问题
    C# 调用打印机打印文件
    C# 获取所有可用的打印机
    记录一次排查使用HttpWebRequest发送请求的发生“基础连接已关闭:接收时发生错误”异常问题的过程
    SQL 分组后只获取每组的一条数据
    记录一次使用NPOI遇到的问题
  • 原文地址:https://www.cnblogs.com/hellow0rd/p/6936957.html
Copyright © 2020-2023  润新知