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这几个字母以外的任意字符

    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

  • 相关阅读:
    一步一步搭建客服系统 (4) 客户列表
    一步一步搭建客服系统 (3) js 实现“截图粘贴”及“生成网页缩略图”
    【Servlet】深入浅出JavaServlet重定向和请求转发
    【java】深入了解JAVA可变长度的参数
    【HTML】网页中如何让DIV在网页滚动到特定位置时出现
    【HTML】 向网页<Title></Title>中插入图片以及跑马灯
    【JQuery】jQuery中的常用方法小结
    【JQuery】jQuery(document).ready(function($) { });的几种表示方法及load和ready的区别
    【JQuery】jquery对象和javascript对象即DOM对象相互转换
    【javascript】javascript中function(){},function(){}(),new function(){},new Function()
  • 原文地址:https://www.cnblogs.com/hellow0rd/p/6936957.html
Copyright © 2011-2022 走看看