zoukankan      html  css  js  c++  java
  • 正则表达式(.NET)

    元字符:

      单词的开头或结尾,匹配一个位置

    .    匹配除换行符以外的任意字符

    d  匹配一位数字  d{n} n个数字  d{a,b} a到b个数字,包含a,b

    s  匹配任意空白符(空格,制表符,换行符,中文全角空格)

    w  匹配字母,数字,下划线,汉字

    ^   匹配字符串的开始

    $   匹配字符串的结束

    转义字符

    \  *  +  .

    重复

    *  重复0次或更多次

    + 重复一次或更多次

    ? 重复0次或1次

    {n}  重复n次

    {n,} 重复n次或更多次

    {n,m} 重复n到m次

    字符

    [aeiou] 匹配aeiou中的任意一个字符

    [0-9]  匹配0到0中的任意一个数字

    [a-z0-9A-Z] 匹配任意一位数字或字母

    分析条件  |

    类似与或,从左到右进行分析,满足就不再继续进行

    0d{2}-d{8}d{3}-d{7}  可以匹配三位区号加八位号码 或 四位区号加七位号码

    分组

    有时候需要重复的不是单个字符,而是某种形式的字符组,可以用()对字符进行分组,{n} 表示重复次数

    (d{3}.){3}d{3} 是一个简单的ip地址形式的匹配,但是会匹配一些不满组格式的ip地址

    ((2[0-4]d|25[0-5]|[0,1]?dd?).){3}(2[0-4]d|25[0-5]|[0,1]?dd?)

    反义

    有时候需要查找不属于某个能简单定义的字符类的字符,则需要使用到反义

    W  非字母数字下划线汉字

    D   非数字

    S   非空白

    D   非单词开头或结束的位置

    [^x]  除x以外的任意字符

    [^aeiou] aeiou之外的任意字符

    向后引用

    使用小括号指定一个子表达式后,匹配这个子表达式的文本被分配到一个组里,可以对这个文本做进一步的处理,通过组号或组名来代表这个捕获的文本

    组号0对整个正则表达式,组号分配有一定的规则,也可以自己命名组,同时会根据规则分配给一个组号。

    组号 代表匹配组号对应表达式的文本

    组号分配:

    自己命名:子表达式的组名 (?<name>子表达式) 或 (?'name'子表达式)  就将这个子表达式对应的组名命名为name  通过k<name> 即可代表子表达式捕获的文本

    组号分配过程是从左到右扫描两遍,第一遍只给未命名组分配组号,第二遍给命名组分配组号,从1开始分

    如果希望小括号指定的子表达式匹配的文本不被捕获,也不分配组号,则可以 (?:子表达式)

    零宽断言

    零宽断言是是用于指定一个满足一定条件的位置(断言),就像^,$,那样,并不代表某个字符,而是匹配一个位置

    (?=表达式)   也被称为零宽度正预测先行断言,断言满足表达式的文本之前的位置。例如想匹配一个ing单词的非ing部分  w+(?=ing)

    (?<=表达式) 也被称为零宽度正回顾后发断言,断言的位置满足这个位置前面的文本满足表达式,相当与断言表达式的文本之后的位置

    (?!表达式) 断言不满足表达式的文本之前的位置       (?<!d)d{3}(?!d) 匹配三个数字,而且这三个数字前后都不能是数字

    (?<!表达式) 断言不满组表达式的文本之后的位置

    注释

    (?#comment)

    贪婪与懒惰

    有时候满足匹配的文本有长有短,默认情况下,会匹配尽可能多的字符,称为贪婪匹配,匹配最短字符的情况称为懒惰匹配

    由于默认是贪婪匹配,所以只列出懒惰匹配

    *?  +?  ??  {n,m}?  {n,}?

    参考:http://www.jb51.net/tools/zhengze.html

  • 相关阅读:
    Uva 12166 Equilibrium Mobile
    2015年7月实习经历以及一些感悟
    让键盘只数字键盘
    保留两位小数且,不四舍五入
    vuex的理解
    点击出现闪烁
    vue 添加样式分几种方法
    数据滞后的坑
    H5防止安卓手机软键盘弹出挤压页面导致变形的方法
    js 为false的几种情况
  • 原文地址:https://www.cnblogs.com/buptlyn/p/3626152.html
Copyright © 2011-2022 走看看