zoukankan      html  css  js  c++  java
  • C#正则表达式

    正则表达式语法表示的字符类

    \d        从0~9的任一数字
    \D        非数字字符
    \w        任一单词字符,如A-Z、a-z、0-9和下划线字符
    \W       非单词字符
    \s         任一空白字符,包括了制表符,换行符,回车符
    \S         任一非空白字符
    .           任一字符
    [...]       括号中的任一字符
    [^...]    非括号中的任一字符

    指定匹配位置
    ^          其后的模式必须在字符串的开始处
    $           前面的模式必须在字符串的末尾处
    \A          前面的模式必须在字符串的开始处,多行标志被忽略
    \z          前面的模式必须在字符串的末尾处,多行标志被忽略
    \Z          前面的模式必须位于字符串的末尾,或是位于换行符前
    \b           匹配一个单词边界
    \B           匹配一个非单词边界的位置,不在一个单词的开始

    指定重复字符
    {n}        匹配前面的字符n次
    {n,}       匹配前面的字符n次或更多
    {n,m}     匹配前面的字符最少n次,最多m次
    ?             匹配前面的字符0次或1次
    +            匹配前面的字符1次或多次
    *             匹配前面的字符0次或多次
    特殊字符
    \\             匹配字符 \
    \.              匹配字符 .
    \*              匹配字符 *
    \+             匹配字符 +
    \?              匹配字符 ?
    \|              匹配字符 |

    简单的分组
    1.捕获 ()
    此分组字符组合模式在括号内匹配的字符。
    输入字符串:ABC1DEF2XY
    正则 ([A-Z]{3})\d
    此表达式产生了如下两个匹配
    1st Match = ABC1
    2ndMatch = DEF2
    2.非捕获 (?:)
    此分组符合组合了模式在括号中匹配的字符。它是一个非捕获组,所匹配的字符将不作为一个组在捕获。
    输入字符串:1ABBSA1C
    正则 (?:\d|[A-Z])\w
    此表达式产生3个匹配
    1stMatch =1A
    2ndMatch=BB
    3rdMatch=SA
    但是没有组被捕获
    3.通过名词捕获(?<name>)
    此分组符号组合了模式在方括号内匹配的字符,并把在尖括号中指定的名称作为组的名词。
    高级组
    1.正声明 (?=)
    规定了括号中的模式必须出现在声明的右侧。模式将不构成最后匹配的一部分。
    2.负声明(?!)
    规定了模式不能紧邻声明的右侧。模式不构成最终匹配的一部分。
    3.反向正声明(?<=)
    规定了括号中的模式必须出现在声明的左侧
    4.反向负声明 (?<!)
    规定了模式不能紧邻声明的左侧。模式仍然不够成最终匹配的一部分
    5.非回溯(?>)
    防止了Regex引擎在失败时回溯以试图匹配。

  • 相关阅读:
    5 静态链接和动态链接
    4 程序编译与链接
    3.死锁
    2.调度算法
    1 select,poll和epoll
    python语言特性
    python动态规划
    python语言编程算法
    链表
    认识黑客常用的入侵方法
  • 原文地址:https://www.cnblogs.com/zhxhdean/p/2042055.html
Copyright © 2011-2022 走看看