[c#.Net]正则表达式 记录

  1. @符号
    c#字符串前使用@符号,“@”表示,跟在它后面的字符串是个“逐字字符串”。
    1 string x="D:\My Huang\My Doc";
    2 string y = @"D:My HuangMy Doc"; //等效
  2. 基本语法
    d 0-9数字
    D d的补集,即所有非数字的字符
    w 单词字符,包括:大小写字符,0-9数字,下划线
    W w的补集
    s 空白字符
    S  s的补集
    . 除换行符 外的所有字符
    [...] 匹配[]内列出的所有字符
    [^...] 匹配非[]内列出的所有字符
    (...) 匹配组合,记录
    (?:...) 匹配组合,非记录


  3. 定位
    ^ 字符串开始
    $ 字符串结束
     匹配一个单词的边界
    B 匹配一个非单词边界


  4. 重复描述字符
    {n} 匹配前面的字符n次
    {n,}  匹配前面的字符大于等于n次
    {n,m} 匹配前面的字符n到m次
    ? 0到1次
    + 1到多次
    * 0到多次

  5. 组与非捕获组
    正则表达式引擎会记忆"()"中匹配到的内容,作为一个组,并且可以通过索引的方式进行引用。表达式中的"1",用于反向引用表达式中出现的第一个组
     1 string x = "Find somebody to love me, Find somebody to love";
     2 Regex r = new Regex(@"^Find ([a-z]{8}) to ([a-z]{4}) me, Find 1 to 2$");
     3 // r.Matches(x).Count --> 1
     4 // Groups[0]是整个匹配的字符串,Groups[1]是组内的内容
     5 // r.Matches(x).Groups[1].Value --> somebody
     6 
     7 Regex r2 = new Regex(@"^Find (?<group1>[a-z]{8}) to ([a-z]{4}) me, Find 1 to 2$");
     8 // r2.Matches(x).Groups["group1"].Value
     9 
    10 string y = "Find somebody somebody";
    11 regex r3 = new Regex(@"(?<g1>[a-z]+) 1");
    12 if (r3.IsMatch(y))
    13 {
    14     y = r3.Replace(y, "${g1}");
    15 }
  6. 贪婪与非贪婪
    在*,+符号后添加?,可以将匹配模式改成非贪婪
  7. 忽略大小写
    Regex reg = new Regex(regPattern, RegexOptions.IgnoreCase);
原文地址:https://www.cnblogs.com/bicker/p/5244987.html