zoukankan      html  css  js  c++  java
  • 正则表达式知识点整理

    定位符    
     匹配单词的开始或结束
    B 匹配不是单词开头或结
    束的位置
     
    ^ 匹配字符串的开始  
    $ 匹配字符串的结束  
    内容匹配    
    w 匹配字母或数字或下划
    线或汉字
     
    W 匹配非字母或数字或下
    划线或汉字的字符
     
    d 匹配数字  
    D 匹配非数字  
    s 匹配任意的空白符  
    S 匹配任何非空白字符  
    . 匹配除换行符以外的
    任意字符
     
    f 匹配一个换页符  
    匹配一个换行符  
    匹配一个回车符  
    匹配一个制表符  
    v 匹配一个垂直制表符  
    数量匹配    
    * 重复零次或更多次  
    重复零次或一次  
    + 重复一次或更多次  
    {N} 重复N次  
    {N,} 重复N次,或更多  
    {N,M} 重复N到M次  
    可选项匹配    
    [ABC] 匹配[]中任何一个
    字符
     
    [0-9A-Z] 匹配0-9或A-Z中任
    何一个字符
     
    [^0-9] 匹配0-9以外任何
    一个字符
     
    分支条件    
    | 分支条件(或逻辑) 使用分枝条件时,要注意各个条件的顺序。
    逻辑较为严格匹配表达式应该放在前面
    匹配时,
    将会从左到右地测试每个条件,
    如果满足了某个分枝的话,就不会去再管
    其它的条件了
    分组    
    () 可以用小括号来指
    定子表达式(分组)
    对于子表达式可以去统一制定循环次数
    向后引用    
    (exp) 匹配exp,并捕获文
    本到自动命名的组里
    引用方式:index  index 为从
    左到右分配的组号
    (?<name>exp) 匹配exp,并捕获文本
    到名称为name的组里
    ,也可以写成
    (?'name'exp)
    K<nmae>
    (?:exp) 匹配exp,不捕获匹配
    的文本,也不给此分
    组分配组号
     
    零宽断言    
    (?=exp) 匹配exp前面的位置
    [描述 exp与前面部
    分的关系]
    例如:w+(?=ing)  先找到ing匹配的位置,
    然后再以ing为结尾判断w+匹配的内容
    (?<=exp) 匹配exp后面的位置
    [描述 exp与后面部
    分的关系]
    例如:(?<=re)w+  先找到re匹配的位置,
    然后再以re为开头判断w+匹配的内容
    负向零宽断言    
    (?!exp) 匹配后面跟的不是
    exp的位置[描述exp
    与前面部分的关系]
    例如:d{3}(?!d) 先找到d{3}匹配的字符串,
    然后判断它后面的内容不匹配d
    (?<!exp) 匹配前面不是exp的
    位置[描述 exp与
    后面部分的关系]
    例如:(?<![a-z])d{7} 先找到d{7}匹配的字符串,
    然后判断它前面的内容不匹配[a-z]
    注释    
    (?#注释文本) 括号内的内容为注释  
    #注释文本 当前这一行,#之后
    的内容全部为注释
     
    贪婪与懒惰    
    贪婪匹配:正则表达式中包含能接受重复的限定符时,通常的行为是(在使整个表达式能得到匹配的前提下)
    匹配尽可能多的字符。
    懒惰匹配:就是匹配尽可能少的字符。只要在它后面加上一个问号?就可以转换
    匹配优先级:正则表达式有另一条规则,比懒惰/贪婪规则的优先级更高:最先开始的匹配拥有最高的优先权
    *? 重复任意次,但尽
    可能少重复
     
    +? 重复1次或更多次,
    但尽可能少重复
     
    ?? 重复0次或1次,
    但尽可能少重复
     
    {n,m}? 重复n到m次,
    但尽可能少重复
     
    {n,}? 重复n次以上,
    但尽可能少重复
     
    处理选项(.net支持)  
    IgnoreCase(忽略大小写) 匹配时不区分大小写。  
    Multiline(多行模式) 更改^和$的含义,使它们分别在任意一行的行首和行尾匹配,而不仅仅在
    整个字符串的开头和结尾匹配。(在此模式下,$的精确含意是:匹配 之
    前的位置以及字符串结束前的位置.)
    Singleline(单行模式) 更改.的含义,使它与每一个字符匹配(包括换行符 )。
    IgnorePatternWhitespace(忽略空白) 忽略表达式中的非转义空白启用由#标记的注释。
    ExplicitCapture(显式捕获) 仅捕获已被显式命名的组。  
    如:Regex regex = new Regex(@"aw{6}", RegexOptions.IgnoreCase);
    注:多行模式和单行模式可同时启用,这两个选项之间没有任何关系,除了它们的名字比较相似。
  • 相关阅读:
    PHP入门
    PHP入门
    PHP入门
    BatsingJSLib 2.3、Ajax上传多个文件
    href的那些事
    从校招网申看华为
    单片机C语言探究--为什么变量最好要赋初值
    Linux学习笔记-Ubuntu添加右键菜单打开终端
    重载--面向对象的鸡肋,强类型语言的软肋
    vs2015发布项目到虚拟主机组策略阻止csc.exe程序问题
  • 原文地址:https://www.cnblogs.com/SunDigital/p/4786520.html
Copyright © 2011-2022 走看看